Edit on GitHub

sqlglot.dialects.materialize

 1from __future__ import annotations
 2
 3from sqlglot.dialects.postgres import Postgres
 4from sqlglot.generators.materialize import MaterializeGenerator
 5from sqlglot.parsers.materialize import MaterializeParser
 6
 7
 8class Materialize(Postgres):
 9    NORMALIZE_NOT_NULL = True
10
11    UNESCAPED_SEQUENCES = {"\\a": "a", "\\v": "v"}
12
13    class Tokenizer(Postgres.Tokenizer):
14        NUMERIC_ESCAPES = {"u": (16, 4, 4, 0xFFFF), "U": (16, 8, 8, 0x10FFFF)}
15
16    Parser = MaterializeParser
17
18    Generator = MaterializeGenerator
class Materialize(sqlglot.dialects.postgres.Postgres):
 9class Materialize(Postgres):
10    NORMALIZE_NOT_NULL = True
11
12    UNESCAPED_SEQUENCES = {"\\a": "a", "\\v": "v"}
13
14    class Tokenizer(Postgres.Tokenizer):
15        NUMERIC_ESCAPES = {"u": (16, 4, 4, 0xFFFF), "U": (16, 8, 8, 0x10FFFF)}
16
17    Parser = MaterializeParser
18
19    Generator = MaterializeGenerator
NORMALIZE_NOT_NULL = True
UNESCAPED_SEQUENCES: dict[str, str] = {'\\a': 'a', '\\b': '\x08', '\\f': '\x0c', '\\n': '\n', '\\r': '\r', '\\t': '\t', '\\v': 'v', '\\\\': '\\'}

Mapping of an escaped sequence (\n) to its unescaped version ( ).

SUPPORTS_COLUMN_JOIN_MARKS = False

Whether the old-style outer join (+) syntax is supported.

STRINGS_SUPPORT_ESCAPED_SEQUENCES: bool = False

Whether string literals support escape sequences (e.g. \n). Set by the metaclass based on the tokenizer's STRING_ESCAPES.

BYTE_STRINGS_SUPPORT_ESCAPED_SEQUENCES: bool = True

Whether byte string literals support escape sequences. Set by the metaclass based on the tokenizer's BYTE_STRING_ESCAPES.

IDENTIFIER_ESCAPED_SEQUENCES: dict[str, str] = {}

Mapping of an identifier escape char (\) to its escaped version (\\). Set by the metaclass based on the tokenizer's IDENTIFIER_ESCAPES.

INITCAP_SUPPORTS_CUSTOM_DELIMITERS = False
tokenizer_class = <class 'Materialize.Tokenizer'>
jsonpath_tokenizer_class = <class 'sqlglot.dialects.dialect.JSONPathTokenizer'>
TIME_TRIE: dict = {'d': {0: True, 'd': {0: True, 'd': {0: True}}, 'a': {'y': {0: True}}, 'y': {0: True}}, 'D': {0: True, 'D': {0: True, 'D': {0: True}}}, 'F': {'M': {'D': {'D': {0: True, 'D': {0: True}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'S': {'S': {0: True}}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'm': {'i': {0: True}, 'm': {0: True}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'O': {'F': {0: True}}, 's': {'s': {0: True}}, 'S': {'S': {0: True}}, 'T': {'M': {'D': {'a': {'y': {0: True}}, 'y': {0: True}}, 'M': {'o': {'n': {0: True, 't': {'h': {0: True}}}}}}, 'Z': {0: True}}, 'U': {'S': {0: True}}, 'w': {'w': {0: True}}, 'W': {'W': {0: True}}, 'y': {'y': {0: True, 'y': {0: True, 'y': {0: True}}}}, 'Y': {'Y': {0: True, 'Y': {0: True, 'Y': {0: True}}}}}
FORMAT_TRIE: dict = {'d': {0: True, 'd': {0: True, 'd': {0: True}}, 'a': {'y': {0: True}}, 'y': {0: True}}, 'D': {0: True, 'D': {0: True, 'D': {0: True}}}, 'F': {'M': {'D': {'D': {0: True, 'D': {0: True}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'S': {'S': {0: True}}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'm': {'i': {0: True}, 'm': {0: True}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'O': {'F': {0: True}}, 's': {'s': {0: True}}, 'S': {'S': {0: True}}, 'T': {'M': {'D': {'a': {'y': {0: True}}, 'y': {0: True}}, 'M': {'o': {'n': {0: True, 't': {'h': {0: True}}}}}}, 'Z': {0: True}}, 'U': {'S': {0: True}}, 'w': {'w': {0: True}}, 'W': {'W': {0: True}}, 'y': {'y': {0: True, 'y': {0: True, 'y': {0: True}}}}, 'Y': {'Y': {0: True, 'Y': {0: True, 'Y': {0: True}}}}}
INVERSE_TIME_MAPPING: dict[str, str] = {'%u': 'D', '%d': 'DD', '%j': 'DDD', '%-d': 'FMDD', '%-j': 'FMDDD', '%-I': 'FMHH12', '%-H': 'FMHH24', '%-M': 'FMMI', '%-m': 'FMMM', '%-S': 'FMSS', '%I': 'HH12', '%H': 'HH24', '%M': 'MI', '%m': 'MM', '%z': 'OF', '%S': 'SS', '%A': 'TMDay', '%a': 'TMDy', '%b': 'TMMon', '%B': 'TMMonth', '%Aenlower': 'day', '%aenlower': 'dy', '%Z': 'TZ', '%f': 'US', '%U': 'WW', '%y': 'YY', '%Ythree': 'YYY', '%Y': 'YYYY', '%mstrict': 'MM', '%dstrict': 'DD', '%Hstrict': 'HH24', '%Istrict': 'HH12', '%Mstrict': 'MI', '%Sstrict': 'SS'}
INVERSE_TIME_TRIE: dict = {'%': {'u': {0: True}, 'd': {0: True, 's': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'j': {0: True}, '-': {'d': {0: True}, 'j': {0: True}, 'I': {0: True}, 'H': {0: True}, 'M': {0: True}, 'm': {0: True}, 'S': {0: True}}, 'I': {0: True, 's': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'H': {0: True, 's': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'M': {0: True, 's': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'm': {0: True, 's': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'z': {0: True}, 'S': {0: True, 's': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'A': {0: True, 'e': {'n': {'l': {'o': {'w': {'e': {'r': {0: True}}}}}}}}, 'a': {0: True, 'e': {'n': {'l': {'o': {'w': {'e': {'r': {0: True}}}}}}}}, 'b': {0: True}, 'B': {0: True}, 'Z': {0: True}, 'f': {0: True}, 'U': {0: True}, 'y': {0: True}, 'Y': {'t': {'h': {'r': {'e': {'e': {0: True}}}}}, 0: True}}}
INVERSE_FORMAT_MAPPING: dict[str, str] = {'%mstrict': '%m', '%dstrict': '%d', '%Hstrict': '%H', '%Istrict': '%I', '%Mstrict': '%M', '%Sstrict': '%S'}
INVERSE_FORMAT_TRIE: dict = {'%': {'m': {'s': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'd': {'s': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'H': {'s': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'I': {'s': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'M': {'s': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}, 'S': {'s': {'t': {'r': {'i': {'c': {'t': {0: True}}}}}}}}}
INVERSE_CREATABLE_KIND_MAPPING: dict[str, str] = {}
ESCAPED_SEQUENCES: dict[str, str] = {'\x08': '\\b', '\x0c': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t', '\\': '\\\\', '\x00': '\\u0000', '\x01': '\\u0001', '\x02': '\\u0002', '\x03': '\\u0003', '\x04': '\\u0004', '\x05': '\\u0005', '\x06': '\\u0006', '\x07': '\\u0007', '\x0b': '\\u000b', '\x0e': '\\u000e', '\x0f': '\\u000f', '\x10': '\\u0010', '\x11': '\\u0011', '\x12': '\\u0012', '\x13': '\\u0013', '\x14': '\\u0014', '\x15': '\\u0015', '\x16': '\\u0016', '\x17': '\\u0017', '\x18': '\\u0018', '\x19': '\\u0019', '\x1a': '\\u001a', '\x1b': '\\u001b', '\x1c': '\\u001c', '\x1d': '\\u001d', '\x1e': '\\u001e', '\x1f': '\\u001f', '\x7f': '\\u007f'}
QUOTE_START = "'"
QUOTE_END = "'"
IDENTIFIER_START = '"'
IDENTIFIER_END = '"'
VALID_INTERVAL_UNITS: set[str] = {'MINUTE', 'QUARTERS', 'H', 'MILLISECON', 'EPOCH_MICROSECONDS', 'CENTS', 'EPOCH_MILLISECONDS', 'DW_ISO', 'WEEKOFYEAR', 'WK', 'WEEK_ISO', 'QUARTER', 'NSEC', 'SECONDS', 'DOW', 'MINUTES', 'S', 'WEEK', 'CENT', 'EPOCH', 'QTRS', 'YRS', 'MILLISEC', 'Q', 'MICROSECOND', 'MONTHS', 'MILLISECONDS', 'DAYOFMONTH', 'CENTURY', 'HH', 'EPOCH_SECONDS', 'MSECONDS', 'MON', 'MI', 'NANOSEC', 'DAY OF YEAR', 'DAYS', 'DAYOFWEEK_ISO', 'MICROSECS', 'HRS', 'NANOSECS', 'DOW_ISO', 'YR', 'MS', 'USECOND', 'DY', 'NANOSECOND', 'YYY', 'MSECS', 'CENTURIES', 'QTR', 'D', 'DW', 'WEEKOFYEARISO', 'MSEC', 'DOY', 'DAY', 'WY', 'EPOCH_MILLISECOND', 'MONS', 'EPOCH_SECOND', 'M', 'YY', 'EPOCH_NANOSECONDS', 'MICROSECONDS', 'TIMEZONE_HOUR', 'DAYOFWEEK', 'YEAR', 'USECONDS', 'DECS', 'HOUR', 'MICROSEC', 'USECS', 'WEEKISO', 'MIL', 'MILS', 'EPOCH_NANOSECOND', 'Y', 'W', 'WEEKDAY_ISO', 'DECADES', 'MILLENNIUM', 'DD', 'SECS', 'US', 'DEC', 'HOURS', 'MM', 'DAYOFWEEKISO', 'YEARS', 'TZH', 'MILLISECS', 'MIN', 'NSECONDS', 'C', 'SEC', 'USEC', 'TZM', 'TIMEZONE_MINUTE', 'SECOND', 'DAYOFYEAR', 'WEEKOFYEAR_ISO', 'MILLISECOND', 'DAY OF WEEK', 'EPOCH_MICROSECOND', 'MINS', 'MONTH', 'WOY', 'YYYY', 'MILLENIA', 'NS', 'HR', 'DECADE', 'WEEKDAY', 'NSECOND', 'MSECOND'}
BIT_START: str | None = "b'"
BIT_END: str | None = "'"
HEX_START: str | None = "x'"
HEX_END: str | None = "'"
BYTE_START: str | None = "e'"
BYTE_END: str | None = "'"
UNICODE_START: str | None = "U&'"
UNICODE_END: str | None = "'"
class Materialize.Tokenizer(sqlglot.dialects.postgres.Postgres.Tokenizer):
14    class Tokenizer(Postgres.Tokenizer):
15        NUMERIC_ESCAPES = {"u": (16, 4, 4, 0xFFFF), "U": (16, 8, 8, 0x10FFFF)}
NUMERIC_ESCAPES = {'u': (16, 4, 4, 65535), 'U': (16, 8, 8, 1114111)}