1
0
Fork 0
sqlglot/sqlglot/dialects/athena.py
Daniel Baumann 213191b8e3
Merging upstream version 23.16.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-13 21:35:32 +01:00

36 lines
1.1 KiB
Python

from __future__ import annotations
from sqlglot import exp
from sqlglot.dialects.trino import Trino
from sqlglot.tokens import TokenType
class Athena(Trino):
class Parser(Trino.Parser):
STATEMENT_PARSERS = {
**Trino.Parser.STATEMENT_PARSERS,
TokenType.USING: lambda self: self._parse_as_command(self._prev),
}
class Generator(Trino.Generator):
WITH_PROPERTIES_PREFIX = "TBLPROPERTIES"
PROPERTIES_LOCATION = {
**Trino.Generator.PROPERTIES_LOCATION,
exp.LocationProperty: exp.Properties.Location.POST_SCHEMA,
}
TYPE_MAPPING = {
**Trino.Generator.TYPE_MAPPING,
exp.DataType.Type.TEXT: "STRING",
}
TRANSFORMS = {
**Trino.Generator.TRANSFORMS,
exp.FileFormatProperty: lambda self, e: f"'FORMAT'={self.sql(e, 'this')}",
}
def property_sql(self, expression: exp.Property) -> str:
return (
f"{self.property_name(expression, string_key=True)}={self.sql(expression, 'value')}"
)