1
0
Fork 0

Merging upstream version 6.2.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 14:35:19 +01:00
parent 88ff88b74b
commit 4babd49305
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
3 changed files with 37 additions and 2 deletions

View file

@ -20,7 +20,7 @@ from sqlglot.generator import Generator
from sqlglot.parser import Parser from sqlglot.parser import Parser
from sqlglot.tokens import Tokenizer, TokenType from sqlglot.tokens import Tokenizer, TokenType
__version__ = "6.2.0" __version__ = "6.2.1"
pretty = False pretty = False

View file

@ -912,14 +912,18 @@ class Properties(Expression):
@staticmethod @staticmethod
def _convert_value(value): def _convert_value(value):
if value is None:
return NULL
if isinstance(value, Expression): if isinstance(value, Expression):
return value return value
if isinstance(value, bool):
return Boolean(this=value)
if isinstance(value, str): if isinstance(value, str):
return Literal.string(value) return Literal.string(value)
if isinstance(value, numbers.Number): if isinstance(value, numbers.Number):
return Literal.number(value) return Literal.number(value)
if isinstance(value, list): if isinstance(value, list):
return Tuple(expressions=[_convert_value(v) for v in value]) return Tuple(expressions=[Properties._convert_value(v) for v in value])
raise ValueError(f"Unsupported type '{type(value)}' for value '{value}'") raise ValueError(f"Unsupported type '{type(value)}' for value '{value}'")

View file

@ -414,3 +414,34 @@ class TestExpressions(unittest.TestCase):
self.assertEqual(parse_one("heLLO()").sql(normalize_functions=None), "heLLO()") self.assertEqual(parse_one("heLLO()").sql(normalize_functions=None), "heLLO()")
self.assertEqual(parse_one("SUM(x)").sql(normalize_functions="lower"), "sum(x)") self.assertEqual(parse_one("SUM(x)").sql(normalize_functions="lower"), "sum(x)")
self.assertEqual(parse_one("sum(x)").sql(normalize_functions="upper"), "SUM(x)") self.assertEqual(parse_one("sum(x)").sql(normalize_functions="upper"), "SUM(x)")
def test_properties_from_dict(self):
self.assertEqual(
exp.Properties.from_dict(
{
"FORMAT": "parquet",
"PARTITIONED_BY": [exp.to_identifier("a"), exp.to_identifier("b")],
"custom": 1,
"TABLE_FORMAT": exp.to_identifier("test_format"),
"ENGINE": None,
"COLLATE": True,
}
),
exp.Properties(
expressions=[
exp.FileFormatProperty(this=exp.Literal.string("FORMAT"), value=exp.Literal.string("parquet")),
exp.PartitionedByProperty(
this=exp.Literal.string("PARTITIONED_BY"),
value=exp.Tuple(expressions=[exp.to_identifier("a"), exp.to_identifier("b")]),
),
exp.AnonymousProperty(this=exp.Literal.string("custom"), value=exp.Literal.number(1)),
exp.TableFormatProperty(
this=exp.Literal.string("TABLE_FORMAT"), value=exp.to_identifier("test_format")
),
exp.EngineProperty(this=exp.Literal.string("ENGINE"), value=exp.NULL),
exp.CollateProperty(this=exp.Literal.string("COLLATE"), value=exp.TRUE),
]
),
)
self.assertRaises(ValueError, exp.Properties.from_dict, {"FORMAT": {"key": "value"}})