sqlglot.dialects.doris
1from __future__ import annotations 2 3from sqlglot import exp 4from sqlglot.dialects.dialect import ( 5 approx_count_distinct_sql, 6 build_timestamp_trunc, 7 rename_func, 8 time_format, 9 unit_to_str, 10) 11from sqlglot.dialects.mysql import MySQL 12 13 14def _lag_lead_sql(self, expression: exp.Lag | exp.Lead) -> str: 15 return self.func( 16 "LAG" if isinstance(expression, exp.Lag) else "LEAD", 17 expression.this, 18 expression.args.get("offset") or exp.Literal.number(1), 19 expression.args.get("default") or exp.null(), 20 ) 21 22 23class Doris(MySQL): 24 DATE_FORMAT = "'yyyy-MM-dd'" 25 DATEINT_FORMAT = "'yyyyMMdd'" 26 TIME_FORMAT = "'yyyy-MM-dd HH:mm:ss'" 27 28 class Parser(MySQL.Parser): 29 FUNCTIONS = { 30 **MySQL.Parser.FUNCTIONS, 31 "COLLECT_SET": exp.ArrayUniqueAgg.from_arg_list, 32 "DATE_TRUNC": build_timestamp_trunc, 33 "MONTHS_ADD": exp.AddMonths.from_arg_list, 34 "REGEXP": exp.RegexpLike.from_arg_list, 35 "TO_DATE": exp.TsOrDsToDate.from_arg_list, 36 } 37 38 FUNCTION_PARSERS = MySQL.Parser.FUNCTION_PARSERS.copy() 39 FUNCTION_PARSERS.pop("GROUP_CONCAT") 40 41 class Generator(MySQL.Generator): 42 LAST_DAY_SUPPORTS_DATE_PART = False 43 VARCHAR_REQUIRES_SIZE = False 44 45 TYPE_MAPPING = { 46 **MySQL.Generator.TYPE_MAPPING, 47 exp.DataType.Type.TEXT: "STRING", 48 exp.DataType.Type.TIMESTAMP: "DATETIME", 49 exp.DataType.Type.TIMESTAMPTZ: "DATETIME", 50 } 51 52 CAST_MAPPING = {} 53 TIMESTAMP_FUNC_TYPES = set() 54 55 TRANSFORMS = { 56 **MySQL.Generator.TRANSFORMS, 57 exp.AddMonths: rename_func("MONTHS_ADD"), 58 exp.ApproxDistinct: approx_count_distinct_sql, 59 exp.ArgMax: rename_func("MAX_BY"), 60 exp.ArgMin: rename_func("MIN_BY"), 61 exp.ArrayAgg: rename_func("COLLECT_LIST"), 62 exp.ArrayUniqueAgg: rename_func("COLLECT_SET"), 63 exp.CurrentTimestamp: lambda self, _: self.func("NOW"), 64 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, unit_to_str(e)), 65 exp.GroupConcat: lambda self, e: self.func( 66 "GROUP_CONCAT", e.this, e.args.get("separator") or exp.Literal.string(",") 67 ), 68 exp.JSONExtractScalar: lambda self, e: self.func("JSON_EXTRACT", e.this, e.expression), 69 exp.Lag: _lag_lead_sql, 70 exp.Lead: _lag_lead_sql, 71 exp.Map: rename_func("ARRAY_MAP"), 72 exp.RegexpLike: rename_func("REGEXP"), 73 exp.RegexpSplit: rename_func("SPLIT_BY_STRING"), 74 exp.Split: rename_func("SPLIT_BY_STRING"), 75 exp.StringToArray: rename_func("SPLIT_BY_STRING"), 76 exp.StrToUnix: lambda self, e: self.func("UNIX_TIMESTAMP", e.this, self.format_time(e)), 77 exp.TimeStrToDate: rename_func("TO_DATE"), 78 exp.TsOrDsAdd: lambda self, e: self.func("DATE_ADD", e.this, e.expression), 79 exp.TsOrDsToDate: lambda self, e: self.func("TO_DATE", e.this), 80 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), 81 exp.TimestampTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, unit_to_str(e)), 82 exp.UnixToStr: lambda self, e: self.func( 83 "FROM_UNIXTIME", e.this, time_format("doris")(self, e) 84 ), 85 exp.UnixToTime: rename_func("FROM_UNIXTIME"), 86 } 87 88 # https://github.com/apache/doris/blob/e4f41dbf1ec03f5937fdeba2ee1454a20254015b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4#L93 89 RESERVED_KEYWORDS = { 90 "account_lock", 91 "account_unlock", 92 "add", 93 "adddate", 94 "admin", 95 "after", 96 "agg_state", 97 "aggregate", 98 "alias", 99 "all", 100 "alter", 101 "analyze", 102 "analyzed", 103 "and", 104 "anti", 105 "append", 106 "array", 107 "array_range", 108 "as", 109 "asc", 110 "at", 111 "authors", 112 "auto", 113 "auto_increment", 114 "backend", 115 "backends", 116 "backup", 117 "begin", 118 "belong", 119 "between", 120 "bigint", 121 "bin", 122 "binary", 123 "binlog", 124 "bitand", 125 "bitmap", 126 "bitmap_union", 127 "bitor", 128 "bitxor", 129 "blob", 130 "boolean", 131 "brief", 132 "broker", 133 "buckets", 134 "build", 135 "builtin", 136 "bulk", 137 "by", 138 "cached", 139 "call", 140 "cancel", 141 "case", 142 "cast", 143 "catalog", 144 "catalogs", 145 "chain", 146 "char", 147 "character", 148 "charset", 149 "check", 150 "clean", 151 "cluster", 152 "clusters", 153 "collate", 154 "collation", 155 "collect", 156 "column", 157 "columns", 158 "comment", 159 "commit", 160 "committed", 161 "compact", 162 "complete", 163 "config", 164 "connection", 165 "connection_id", 166 "consistent", 167 "constraint", 168 "constraints", 169 "convert", 170 "copy", 171 "count", 172 "create", 173 "creation", 174 "cron", 175 "cross", 176 "cube", 177 "current", 178 "current_catalog", 179 "current_date", 180 "current_time", 181 "current_timestamp", 182 "current_user", 183 "data", 184 "database", 185 "databases", 186 "date", 187 "date_add", 188 "date_ceil", 189 "date_diff", 190 "date_floor", 191 "date_sub", 192 "dateadd", 193 "datediff", 194 "datetime", 195 "datetimev2", 196 "datev2", 197 "datetimev1", 198 "datev1", 199 "day", 200 "days_add", 201 "days_sub", 202 "decimal", 203 "decimalv2", 204 "decimalv3", 205 "decommission", 206 "default", 207 "deferred", 208 "delete", 209 "demand", 210 "desc", 211 "describe", 212 "diagnose", 213 "disk", 214 "distinct", 215 "distinctpc", 216 "distinctpcsa", 217 "distributed", 218 "distribution", 219 "div", 220 "do", 221 "doris_internal_table_id", 222 "double", 223 "drop", 224 "dropp", 225 "dual", 226 "duplicate", 227 "dynamic", 228 "else", 229 "enable", 230 "encryptkey", 231 "encryptkeys", 232 "end", 233 "ends", 234 "engine", 235 "engines", 236 "enter", 237 "errors", 238 "events", 239 "every", 240 "except", 241 "exclude", 242 "execute", 243 "exists", 244 "expired", 245 "explain", 246 "export", 247 "extended", 248 "external", 249 "extract", 250 "failed_login_attempts", 251 "false", 252 "fast", 253 "feature", 254 "fields", 255 "file", 256 "filter", 257 "first", 258 "float", 259 "follower", 260 "following", 261 "for", 262 "foreign", 263 "force", 264 "format", 265 "free", 266 "from", 267 "frontend", 268 "frontends", 269 "full", 270 "function", 271 "functions", 272 "generic", 273 "global", 274 "grant", 275 "grants", 276 "graph", 277 "group", 278 "grouping", 279 "groups", 280 "hash", 281 "having", 282 "hdfs", 283 "help", 284 "histogram", 285 "hll", 286 "hll_union", 287 "hostname", 288 "hour", 289 "hub", 290 "identified", 291 "if", 292 "ignore", 293 "immediate", 294 "in", 295 "incremental", 296 "index", 297 "indexes", 298 "infile", 299 "inner", 300 "insert", 301 "install", 302 "int", 303 "integer", 304 "intermediate", 305 "intersect", 306 "interval", 307 "into", 308 "inverted", 309 "ipv4", 310 "ipv6", 311 "is", 312 "is_not_null_pred", 313 "is_null_pred", 314 "isnull", 315 "isolation", 316 "job", 317 "jobs", 318 "join", 319 "json", 320 "jsonb", 321 "key", 322 "keys", 323 "kill", 324 "label", 325 "largeint", 326 "last", 327 "lateral", 328 "ldap", 329 "ldap_admin_password", 330 "left", 331 "less", 332 "level", 333 "like", 334 "limit", 335 "lines", 336 "link", 337 "list", 338 "load", 339 "local", 340 "localtime", 341 "localtimestamp", 342 "location", 343 "lock", 344 "logical", 345 "low_priority", 346 "manual", 347 "map", 348 "match", 349 "match_all", 350 "match_any", 351 "match_phrase", 352 "match_phrase_edge", 353 "match_phrase_prefix", 354 "match_regexp", 355 "materialized", 356 "max", 357 "maxvalue", 358 "memo", 359 "merge", 360 "migrate", 361 "migrations", 362 "min", 363 "minus", 364 "minute", 365 "modify", 366 "month", 367 "mtmv", 368 "name", 369 "names", 370 "natural", 371 "negative", 372 "never", 373 "next", 374 "ngram_bf", 375 "no", 376 "non_nullable", 377 "not", 378 "null", 379 "nulls", 380 "observer", 381 "of", 382 "offset", 383 "on", 384 "only", 385 "open", 386 "optimized", 387 "or", 388 "order", 389 "outer", 390 "outfile", 391 "over", 392 "overwrite", 393 "parameter", 394 "parsed", 395 "partition", 396 "partitions", 397 "password", 398 "password_expire", 399 "password_history", 400 "password_lock_time", 401 "password_reuse", 402 "path", 403 "pause", 404 "percent", 405 "period", 406 "permissive", 407 "physical", 408 "plan", 409 "process", 410 "plugin", 411 "plugins", 412 "policy", 413 "preceding", 414 "prepare", 415 "primary", 416 "proc", 417 "procedure", 418 "processlist", 419 "profile", 420 "properties", 421 "property", 422 "quantile_state", 423 "quantile_union", 424 "query", 425 "quota", 426 "random", 427 "range", 428 "read", 429 "real", 430 "rebalance", 431 "recover", 432 "recycle", 433 "refresh", 434 "references", 435 "regexp", 436 "release", 437 "rename", 438 "repair", 439 "repeatable", 440 "replace", 441 "replace_if_not_null", 442 "replica", 443 "repositories", 444 "repository", 445 "resource", 446 "resources", 447 "restore", 448 "restrictive", 449 "resume", 450 "returns", 451 "revoke", 452 "rewritten", 453 "right", 454 "rlike", 455 "role", 456 "roles", 457 "rollback", 458 "rollup", 459 "routine", 460 "row", 461 "rows", 462 "s3", 463 "sample", 464 "schedule", 465 "scheduler", 466 "schema", 467 "schemas", 468 "second", 469 "select", 470 "semi", 471 "sequence", 472 "serializable", 473 "session", 474 "set", 475 "sets", 476 "shape", 477 "show", 478 "signed", 479 "skew", 480 "smallint", 481 "snapshot", 482 "soname", 483 "split", 484 "sql_block_rule", 485 "start", 486 "starts", 487 "stats", 488 "status", 489 "stop", 490 "storage", 491 "stream", 492 "streaming", 493 "string", 494 "struct", 495 "subdate", 496 "sum", 497 "superuser", 498 "switch", 499 "sync", 500 "system", 501 "table", 502 "tables", 503 "tablesample", 504 "tablet", 505 "tablets", 506 "task", 507 "tasks", 508 "temporary", 509 "terminated", 510 "text", 511 "than", 512 "then", 513 "time", 514 "timestamp", 515 "timestampadd", 516 "timestampdiff", 517 "tinyint", 518 "to", 519 "transaction", 520 "trash", 521 "tree", 522 "triggers", 523 "trim", 524 "true", 525 "truncate", 526 "type", 527 "type_cast", 528 "types", 529 "unbounded", 530 "uncommitted", 531 "uninstall", 532 "union", 533 "unique", 534 "unlock", 535 "unsigned", 536 "update", 537 "use", 538 "user", 539 "using", 540 "value", 541 "values", 542 "varchar", 543 "variables", 544 "variant", 545 "vault", 546 "verbose", 547 "version", 548 "view", 549 "warnings", 550 "week", 551 "when", 552 "where", 553 "whitelist", 554 "with", 555 "work", 556 "workload", 557 "write", 558 "xor", 559 "year", 560 }
24class Doris(MySQL): 25 DATE_FORMAT = "'yyyy-MM-dd'" 26 DATEINT_FORMAT = "'yyyyMMdd'" 27 TIME_FORMAT = "'yyyy-MM-dd HH:mm:ss'" 28 29 class Parser(MySQL.Parser): 30 FUNCTIONS = { 31 **MySQL.Parser.FUNCTIONS, 32 "COLLECT_SET": exp.ArrayUniqueAgg.from_arg_list, 33 "DATE_TRUNC": build_timestamp_trunc, 34 "MONTHS_ADD": exp.AddMonths.from_arg_list, 35 "REGEXP": exp.RegexpLike.from_arg_list, 36 "TO_DATE": exp.TsOrDsToDate.from_arg_list, 37 } 38 39 FUNCTION_PARSERS = MySQL.Parser.FUNCTION_PARSERS.copy() 40 FUNCTION_PARSERS.pop("GROUP_CONCAT") 41 42 class Generator(MySQL.Generator): 43 LAST_DAY_SUPPORTS_DATE_PART = False 44 VARCHAR_REQUIRES_SIZE = False 45 46 TYPE_MAPPING = { 47 **MySQL.Generator.TYPE_MAPPING, 48 exp.DataType.Type.TEXT: "STRING", 49 exp.DataType.Type.TIMESTAMP: "DATETIME", 50 exp.DataType.Type.TIMESTAMPTZ: "DATETIME", 51 } 52 53 CAST_MAPPING = {} 54 TIMESTAMP_FUNC_TYPES = set() 55 56 TRANSFORMS = { 57 **MySQL.Generator.TRANSFORMS, 58 exp.AddMonths: rename_func("MONTHS_ADD"), 59 exp.ApproxDistinct: approx_count_distinct_sql, 60 exp.ArgMax: rename_func("MAX_BY"), 61 exp.ArgMin: rename_func("MIN_BY"), 62 exp.ArrayAgg: rename_func("COLLECT_LIST"), 63 exp.ArrayUniqueAgg: rename_func("COLLECT_SET"), 64 exp.CurrentTimestamp: lambda self, _: self.func("NOW"), 65 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, unit_to_str(e)), 66 exp.GroupConcat: lambda self, e: self.func( 67 "GROUP_CONCAT", e.this, e.args.get("separator") or exp.Literal.string(",") 68 ), 69 exp.JSONExtractScalar: lambda self, e: self.func("JSON_EXTRACT", e.this, e.expression), 70 exp.Lag: _lag_lead_sql, 71 exp.Lead: _lag_lead_sql, 72 exp.Map: rename_func("ARRAY_MAP"), 73 exp.RegexpLike: rename_func("REGEXP"), 74 exp.RegexpSplit: rename_func("SPLIT_BY_STRING"), 75 exp.Split: rename_func("SPLIT_BY_STRING"), 76 exp.StringToArray: rename_func("SPLIT_BY_STRING"), 77 exp.StrToUnix: lambda self, e: self.func("UNIX_TIMESTAMP", e.this, self.format_time(e)), 78 exp.TimeStrToDate: rename_func("TO_DATE"), 79 exp.TsOrDsAdd: lambda self, e: self.func("DATE_ADD", e.this, e.expression), 80 exp.TsOrDsToDate: lambda self, e: self.func("TO_DATE", e.this), 81 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), 82 exp.TimestampTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, unit_to_str(e)), 83 exp.UnixToStr: lambda self, e: self.func( 84 "FROM_UNIXTIME", e.this, time_format("doris")(self, e) 85 ), 86 exp.UnixToTime: rename_func("FROM_UNIXTIME"), 87 } 88 89 # https://github.com/apache/doris/blob/e4f41dbf1ec03f5937fdeba2ee1454a20254015b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4#L93 90 RESERVED_KEYWORDS = { 91 "account_lock", 92 "account_unlock", 93 "add", 94 "adddate", 95 "admin", 96 "after", 97 "agg_state", 98 "aggregate", 99 "alias", 100 "all", 101 "alter", 102 "analyze", 103 "analyzed", 104 "and", 105 "anti", 106 "append", 107 "array", 108 "array_range", 109 "as", 110 "asc", 111 "at", 112 "authors", 113 "auto", 114 "auto_increment", 115 "backend", 116 "backends", 117 "backup", 118 "begin", 119 "belong", 120 "between", 121 "bigint", 122 "bin", 123 "binary", 124 "binlog", 125 "bitand", 126 "bitmap", 127 "bitmap_union", 128 "bitor", 129 "bitxor", 130 "blob", 131 "boolean", 132 "brief", 133 "broker", 134 "buckets", 135 "build", 136 "builtin", 137 "bulk", 138 "by", 139 "cached", 140 "call", 141 "cancel", 142 "case", 143 "cast", 144 "catalog", 145 "catalogs", 146 "chain", 147 "char", 148 "character", 149 "charset", 150 "check", 151 "clean", 152 "cluster", 153 "clusters", 154 "collate", 155 "collation", 156 "collect", 157 "column", 158 "columns", 159 "comment", 160 "commit", 161 "committed", 162 "compact", 163 "complete", 164 "config", 165 "connection", 166 "connection_id", 167 "consistent", 168 "constraint", 169 "constraints", 170 "convert", 171 "copy", 172 "count", 173 "create", 174 "creation", 175 "cron", 176 "cross", 177 "cube", 178 "current", 179 "current_catalog", 180 "current_date", 181 "current_time", 182 "current_timestamp", 183 "current_user", 184 "data", 185 "database", 186 "databases", 187 "date", 188 "date_add", 189 "date_ceil", 190 "date_diff", 191 "date_floor", 192 "date_sub", 193 "dateadd", 194 "datediff", 195 "datetime", 196 "datetimev2", 197 "datev2", 198 "datetimev1", 199 "datev1", 200 "day", 201 "days_add", 202 "days_sub", 203 "decimal", 204 "decimalv2", 205 "decimalv3", 206 "decommission", 207 "default", 208 "deferred", 209 "delete", 210 "demand", 211 "desc", 212 "describe", 213 "diagnose", 214 "disk", 215 "distinct", 216 "distinctpc", 217 "distinctpcsa", 218 "distributed", 219 "distribution", 220 "div", 221 "do", 222 "doris_internal_table_id", 223 "double", 224 "drop", 225 "dropp", 226 "dual", 227 "duplicate", 228 "dynamic", 229 "else", 230 "enable", 231 "encryptkey", 232 "encryptkeys", 233 "end", 234 "ends", 235 "engine", 236 "engines", 237 "enter", 238 "errors", 239 "events", 240 "every", 241 "except", 242 "exclude", 243 "execute", 244 "exists", 245 "expired", 246 "explain", 247 "export", 248 "extended", 249 "external", 250 "extract", 251 "failed_login_attempts", 252 "false", 253 "fast", 254 "feature", 255 "fields", 256 "file", 257 "filter", 258 "first", 259 "float", 260 "follower", 261 "following", 262 "for", 263 "foreign", 264 "force", 265 "format", 266 "free", 267 "from", 268 "frontend", 269 "frontends", 270 "full", 271 "function", 272 "functions", 273 "generic", 274 "global", 275 "grant", 276 "grants", 277 "graph", 278 "group", 279 "grouping", 280 "groups", 281 "hash", 282 "having", 283 "hdfs", 284 "help", 285 "histogram", 286 "hll", 287 "hll_union", 288 "hostname", 289 "hour", 290 "hub", 291 "identified", 292 "if", 293 "ignore", 294 "immediate", 295 "in", 296 "incremental", 297 "index", 298 "indexes", 299 "infile", 300 "inner", 301 "insert", 302 "install", 303 "int", 304 "integer", 305 "intermediate", 306 "intersect", 307 "interval", 308 "into", 309 "inverted", 310 "ipv4", 311 "ipv6", 312 "is", 313 "is_not_null_pred", 314 "is_null_pred", 315 "isnull", 316 "isolation", 317 "job", 318 "jobs", 319 "join", 320 "json", 321 "jsonb", 322 "key", 323 "keys", 324 "kill", 325 "label", 326 "largeint", 327 "last", 328 "lateral", 329 "ldap", 330 "ldap_admin_password", 331 "left", 332 "less", 333 "level", 334 "like", 335 "limit", 336 "lines", 337 "link", 338 "list", 339 "load", 340 "local", 341 "localtime", 342 "localtimestamp", 343 "location", 344 "lock", 345 "logical", 346 "low_priority", 347 "manual", 348 "map", 349 "match", 350 "match_all", 351 "match_any", 352 "match_phrase", 353 "match_phrase_edge", 354 "match_phrase_prefix", 355 "match_regexp", 356 "materialized", 357 "max", 358 "maxvalue", 359 "memo", 360 "merge", 361 "migrate", 362 "migrations", 363 "min", 364 "minus", 365 "minute", 366 "modify", 367 "month", 368 "mtmv", 369 "name", 370 "names", 371 "natural", 372 "negative", 373 "never", 374 "next", 375 "ngram_bf", 376 "no", 377 "non_nullable", 378 "not", 379 "null", 380 "nulls", 381 "observer", 382 "of", 383 "offset", 384 "on", 385 "only", 386 "open", 387 "optimized", 388 "or", 389 "order", 390 "outer", 391 "outfile", 392 "over", 393 "overwrite", 394 "parameter", 395 "parsed", 396 "partition", 397 "partitions", 398 "password", 399 "password_expire", 400 "password_history", 401 "password_lock_time", 402 "password_reuse", 403 "path", 404 "pause", 405 "percent", 406 "period", 407 "permissive", 408 "physical", 409 "plan", 410 "process", 411 "plugin", 412 "plugins", 413 "policy", 414 "preceding", 415 "prepare", 416 "primary", 417 "proc", 418 "procedure", 419 "processlist", 420 "profile", 421 "properties", 422 "property", 423 "quantile_state", 424 "quantile_union", 425 "query", 426 "quota", 427 "random", 428 "range", 429 "read", 430 "real", 431 "rebalance", 432 "recover", 433 "recycle", 434 "refresh", 435 "references", 436 "regexp", 437 "release", 438 "rename", 439 "repair", 440 "repeatable", 441 "replace", 442 "replace_if_not_null", 443 "replica", 444 "repositories", 445 "repository", 446 "resource", 447 "resources", 448 "restore", 449 "restrictive", 450 "resume", 451 "returns", 452 "revoke", 453 "rewritten", 454 "right", 455 "rlike", 456 "role", 457 "roles", 458 "rollback", 459 "rollup", 460 "routine", 461 "row", 462 "rows", 463 "s3", 464 "sample", 465 "schedule", 466 "scheduler", 467 "schema", 468 "schemas", 469 "second", 470 "select", 471 "semi", 472 "sequence", 473 "serializable", 474 "session", 475 "set", 476 "sets", 477 "shape", 478 "show", 479 "signed", 480 "skew", 481 "smallint", 482 "snapshot", 483 "soname", 484 "split", 485 "sql_block_rule", 486 "start", 487 "starts", 488 "stats", 489 "status", 490 "stop", 491 "storage", 492 "stream", 493 "streaming", 494 "string", 495 "struct", 496 "subdate", 497 "sum", 498 "superuser", 499 "switch", 500 "sync", 501 "system", 502 "table", 503 "tables", 504 "tablesample", 505 "tablet", 506 "tablets", 507 "task", 508 "tasks", 509 "temporary", 510 "terminated", 511 "text", 512 "than", 513 "then", 514 "time", 515 "timestamp", 516 "timestampadd", 517 "timestampdiff", 518 "tinyint", 519 "to", 520 "transaction", 521 "trash", 522 "tree", 523 "triggers", 524 "trim", 525 "true", 526 "truncate", 527 "type", 528 "type_cast", 529 "types", 530 "unbounded", 531 "uncommitted", 532 "uninstall", 533 "union", 534 "unique", 535 "unlock", 536 "unsigned", 537 "update", 538 "use", 539 "user", 540 "using", 541 "value", 542 "values", 543 "varchar", 544 "variables", 545 "variant", 546 "vault", 547 "verbose", 548 "version", 549 "view", 550 "warnings", 551 "week", 552 "when", 553 "where", 554 "whitelist", 555 "with", 556 "work", 557 "workload", 558 "write", 559 "xor", 560 "year", 561 }
UNESCAPED_SEQUENCES: Dict[str, str] =
{'\\a': '\x07', '\\b': '\x08', '\\f': '\x0c', '\\n': '\n', '\\r': '\r', '\\t': '\t', '\\v': '\x0b', '\\\\': '\\'}
Mapping of an escaped sequence (\n
) to its unescaped version (
).
tokenizer_class =
<class 'sqlglot.tokens.Tokenizer'>
parser_class =
<class 'Doris.Parser'>
generator_class =
<class 'Doris.Generator'>
TIME_TRIE: Dict =
{'%': {'M': {0: True}, 'c': {0: True}, 'e': {0: True}, 'h': {0: True}, 'i': {0: True}, 's': {0: True}, 'u': {0: True}, 'k': {0: True}, 'l': {0: True}, 'T': {0: True}, 'W': {0: True}}}
FORMAT_TRIE: Dict =
{'%': {'M': {0: True}, 'c': {0: True}, 'e': {0: True}, 'h': {0: True}, 'i': {0: True}, 's': {0: True}, 'u': {0: True}, 'k': {0: True}, 'l': {0: True}, 'T': {0: True}, 'W': {0: True}}}
INVERSE_TIME_MAPPING: Dict[str, str] =
{'%B': '%M', '%-m': '%c', '%-d': '%e', '%I': '%h', '%M': '%i', '%S': '%s', '%W': '%u', '%-H': '%k', '%-I': '%l', '%H:%M:%S': '%T', '%A': '%W'}
INVERSE_TIME_TRIE: Dict =
{'%': {'B': {0: True}, '-': {'m': {0: True}, 'd': {0: True}, 'H': {0: True}, 'I': {0: True}}, 'I': {0: True}, 'M': {0: True}, 'S': {0: True}, 'W': {0: True}, 'H': {':': {'%': {'M': {':': {'%': {'S': {0: True}}}}}}}, 'A': {0: True}}}
ESCAPED_SEQUENCES: Dict[str, str] =
{'\x07': '\\a', '\x08': '\\b', '\x0c': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t', '\x0b': '\\v', '\\': '\\\\'}
Inherited Members
- sqlglot.dialects.dialect.Dialect
- Dialect
- INDEX_OFFSET
- WEEK_OFFSET
- UNNEST_COLUMN_ONLY
- ALIAS_POST_TABLESAMPLE
- TABLESAMPLE_SIZE_IS_PERCENT
- STRICT_STRING_CONCAT
- COPY_PARAMS_ARE_CSV
- NORMALIZE_FUNCTIONS
- PRESERVE_ORIGINAL_NAMES
- LOG_BASE_FIRST
- NULL_ORDERING
- TYPED_DIVISION
- CONCAT_COALESCE
- HEX_LOWERCASE
- FORMAT_MAPPING
- PSEUDOCOLUMNS
- PREFER_CTE_ALIAS_COLUMN
- FORCE_EARLY_ALIAS_REF_EXPANSION
- EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY
- SUPPORTS_ORDER_BY_ALL
- HAS_DISTINCT_ARRAY_CONSTRUCTORS
- SUPPORTS_FIXED_SIZE_ARRAYS
- STRICT_JSON_PATH_SYNTAX
- ON_CONDITION_EMPTY_BEFORE_ERROR
- ARRAY_AGG_INCLUDES_NULLS
- SUPPORTS_VALUES_DEFAULT
- REGEXP_EXTRACT_DEFAULT_GROUP
- SET_OP_DISTINCT_BY_DEFAULT
- CREATABLE_KIND_MAPPING
- DATE_PART_MAPPING
- TYPE_TO_EXPRESSIONS
- ANNOTATORS
- get_or_raise
- format_time
- settings
- normalize_identifier
- case_sensitive
- can_identify
- quote_identifier
- to_json_path
- parse
- parse_into
- generate
- transpile
- tokenize
- tokenizer
- jsonpath_tokenizer
- parser
- generator
29 class Parser(MySQL.Parser): 30 FUNCTIONS = { 31 **MySQL.Parser.FUNCTIONS, 32 "COLLECT_SET": exp.ArrayUniqueAgg.from_arg_list, 33 "DATE_TRUNC": build_timestamp_trunc, 34 "MONTHS_ADD": exp.AddMonths.from_arg_list, 35 "REGEXP": exp.RegexpLike.from_arg_list, 36 "TO_DATE": exp.TsOrDsToDate.from_arg_list, 37 } 38 39 FUNCTION_PARSERS = MySQL.Parser.FUNCTION_PARSERS.copy() 40 FUNCTION_PARSERS.pop("GROUP_CONCAT")
Parser consumes a list of tokens produced by the Tokenizer and produces a parsed syntax tree.
Arguments:
- error_level: The desired error level. Default: ErrorLevel.IMMEDIATE
- error_message_context: The amount of context to capture from a query string when displaying the error message (in number of characters). Default: 100
- max_errors: Maximum number of error messages to include in a raised ParseError. This is only relevant if error_level is ErrorLevel.RAISE. Default: 3
FUNCTIONS =
{'ABS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Abs'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.AddMonths'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.AnonymousAggFunc'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.AnyValue'>>, 'APPLY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Apply'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ApproxDistinct'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ApproxDistinct'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ApproxQuantile'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ApproxTopK'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArgMax'>>, 'ARGMAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArgMax'>>, 'MAX_BY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArgMax'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArgMin'>>, 'ARGMIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArgMin'>>, 'MIN_BY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArgMin'>>, 'ARRAY': <function Parser.<lambda>>, 'ARRAY_AGG': <function Parser.<lambda>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayAll'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayAny'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayConcat'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayConcat'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayConstructCompact'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayContains'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayContains'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayContainsAll'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayContainsAll'>>, 'FILTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayFilter'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayFilter'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayOverlaps'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArraySize'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArraySize'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArraySort'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArraySum'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayToString'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayToString'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayUnionAgg'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayUniqueAgg'>>, 'AVG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Avg'>>, 'CASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Case'>>, 'CAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Cast'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CastToStrType'>>, 'CBRT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Cbrt'>>, 'CEIL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Ceil'>>, 'CEILING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Ceil'>>, 'CHR': <function Parser.<lambda>>, 'CHAR': <function Parser.<lambda>>, 'COALESCE': <function build_coalesce>, 'IFNULL': <function build_coalesce>, 'NVL': <function build_coalesce>, 'COLLATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Collate'>>, 'COLUMNS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Columns'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CombinedAggFunc'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CombinedParameterizedAgg'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ConnectByRoot'>>, 'CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Contains'>>, 'CONVERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Convert'>>, 'CONVERT_TIMEZONE': <function build_convert_timezone>, 'CORR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Corr'>>, 'COUNT': <function Parser.<lambda>>, 'COUNT_IF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CountIf'>>, 'COUNTIF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CountIf'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CovarPop'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CovarSamp'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CurrentDate'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CurrentDatetime'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CurrentTime'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CurrentTimestamp'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.CurrentUser'>>, 'DATE': <function MySQL.Parser.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DateDiff'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DateDiff'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DateFromParts'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DateFromParts'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DateStrToDate'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DateToDi'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Datetime'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DatetimeAdd'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DatetimeDiff'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DatetimeSub'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DatetimeTrunc'>>, 'DAY': <function MySQL.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DayOfMonth'>>, 'DAYOFMONTH': <function MySQL.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DayOfWeek'>>, 'DAYOFWEEK': <function MySQL.Parser.<lambda>>, 'DAYOFWEEK_ISO': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DayOfWeekIso'>>, 'ISODOW': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DayOfWeekIso'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DayOfYear'>>, 'DAYOFYEAR': <function MySQL.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Decode'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.DiToDate'>>, 'ENCODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Encode'>>, 'EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Exists'>>, 'EXP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Exp'>>, 'EXPLODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Explode'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ExplodeOuter'>>, 'EXPLODING_GENERATE_SERIES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ExplodingGenerateSeries'>>, 'EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Extract'>>, 'FEATURES_AT_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.FeaturesAtTime'>>, 'FIRST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.First'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.FirstValue'>>, 'FLATTEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Flatten'>>, 'FLOOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Floor'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.FromBase'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.FromBase64'>>, 'FROM_ISO8601_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.FromISO8601Timestamp'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.GapFill'>>, 'GENERATE_DATE_ARRAY': <function Parser.<lambda>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.GenerateSeries'>>, 'GENERATE_TIMESTAMP_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.GenerateTimestampArray'>>, 'GREATEST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Greatest'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.GroupConcat'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Hll'>>, 'IF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.If'>>, 'IIF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.If'>>, 'INITCAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Initcap'>>, 'INLINE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Inline'>>, 'INT64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Int64'>>, 'IS_INF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.IsInf'>>, 'ISINF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.IsInf'>>, 'IS_NAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.IsNan'>>, 'ISNAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.IsNan'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONArray'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONArrayAgg'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONArrayContains'>>, 'JSONB_CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONBContains'>>, 'JSONB_EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONBExists'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONBExtract'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONBExtractScalar'>>, 'J_S_O_N_EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONExists'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONExtractArray'>>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONFormat'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONObject'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONObjectAgg'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONTable'>>, 'J_S_O_N_VALUE_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.JSONValueArray'>>, 'LAG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Lag'>>, 'LAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Last'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LastDay'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LastDay'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LastValue'>>, 'LEAD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Lead'>>, 'LEAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Least'>>, 'LEFT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Left'>>, 'LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Length'>>, 'LEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Length'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Levenshtein'>>, 'LIST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.List'>>, 'LN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Ln'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LogicalAnd'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LogicalAnd'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LogicalAnd'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LogicalOr'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LogicalOr'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LogicalOr'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Lower'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.LowerHex'>>, 'MD5': <bound method Func.from_arg_list of <class 'sqlglot.expressions.MD5'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.MD5Digest'>>, 'MAKE_INTERVAL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.MakeInterval'>>, 'MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Map'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.MapFromEntries'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.MatchAgainst'>>, 'MAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Max'>>, 'MEDIAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Median'>>, 'MIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Min'>>, 'MONTH': <function MySQL.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.MonthsBetween'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.NextValueFor'>>, 'NORMALIZE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Normalize'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.NthValue'>>, 'NULLIF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Nullif'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.NumberToStr'>>, 'NVL2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Nvl2'>>, 'OBJECT_INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ObjectInsert'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class 'sqlglot.expressions.OpenJSON'>>, 'OVERLAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Overlay'>>, 'PAD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Pad'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ParameterizedAgg'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ParseJSON'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ParseJSON'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.PercentileCont'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.PercentileDisc'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Posexplode'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.PosexplodeOuter'>>, 'POWER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Pow'>>, 'POW': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Pow'>>, 'PREDICT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Predict'>>, 'QUANTILE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Quantile'>>, 'QUARTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Quarter'>>, 'RAND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Rand'>>, 'RANDOM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Rand'>>, 'RANDN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Randn'>>, 'RANGE_N': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RangeN'>>, 'READ_CSV': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ReadCSV'>>, 'REDUCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Reduce'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpExtract'>>, 'REGEXP_EXTRACT_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpExtractAll'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpILike'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpLike'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpReplace'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpSplit'>>, 'REPEAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Repeat'>>, 'RIGHT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Right'>>, 'ROUND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Round'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RowNumber'>>, 'SHA': <bound method Func.from_arg_list of <class 'sqlglot.expressions.SHA'>>, 'SHA1': <bound method Func.from_arg_list of <class 'sqlglot.expressions.SHA'>>, 'SHA2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.SHA2'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.SafeDivide'>>, 'SIGN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Sign'>>, 'SIGNUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Sign'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.SortArray'>>, 'SPLIT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Split'>>, 'SPLIT_PART': <bound method Func.from_arg_list of <class 'sqlglot.expressions.SplitPart'>>, 'SQRT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Sqrt'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StandardHash'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StarMap'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StartsWith'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StartsWith'>>, 'STDDEV': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Stddev'>>, 'STDEV': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Stddev'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StddevPop'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StddevSamp'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StrPosition'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StrToMap'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StrToTime'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StrToUnix'>>, 'STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.String'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StringToArray'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StringToArray'>>, 'STRUCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Struct'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.StructExtract'>>, 'STUFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Stuff'>>, 'INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Stuff'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Substring'>>, 'SUBSTR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Substring'>>, 'SUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Sum'>>, 'TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Time'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeAdd'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeDiff'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeFromParts'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeFromParts'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeStrToDate'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeStrToTime'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeStrToUnix'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeSub'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeToStr'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeToUnix'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeTrunc'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Timestamp'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimestampAdd'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimestampDiff'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimestampFromParts'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimestampFromParts'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimestampSub'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimestampTrunc'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ToArray'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ToBase64'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ToChar'>>, 'TO_DAYS': <function MySQL.Parser.<lambda>>, 'TO_DOUBLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ToDouble'>>, 'TO_MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ToMap'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ToNumber'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Transform'>>, 'TRIM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Trim'>>, 'TRY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Try'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TryCast'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDiToDi'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsAdd'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsDiff'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsToDate'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsToDatetime'>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsToTime'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsToTimestamp'>>, 'UNHEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Unhex'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.UnixDate'>>, 'UNIX_SECONDS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.UnixSeconds'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.UnixToStr'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.UnixToTime'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.UnixToTimeStr'>>, 'UNNEST': <function Parser.<lambda>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Upper'>>, 'UUID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Uuid'>>, 'GEN_RANDOM_UUID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Uuid'>>, 'GENERATE_UUID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Uuid'>>, 'UUID_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Uuid'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Variance'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Variance'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Variance'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.VariancePop'>>, 'VAR_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.VariancePop'>>, 'WEEK': <function MySQL.Parser.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.WeekOfYear'>>, 'WEEKOFYEAR': <function MySQL.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.When'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.XMLTable'>>, 'XOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Xor'>>, 'YEAR': <function MySQL.Parser.<lambda>>, 'ARRAYAGG': <function Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'INSTR': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'LPAD': <function Parser.<lambda>>, 'LEFTPAD': <function Parser.<lambda>>, 'LTRIM': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'RIGHTPAD': <function Parser.<lambda>>, 'RPAD': <function Parser.<lambda>>, 'RTRIM': <function Parser.<lambda>>, 'SCOPE_RESOLUTION': <function Parser.<lambda>>, 'TO_HEX': <function build_hex>, 'CHAR_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Length'>>, 'CHARACTER_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.Length'>>, 'CONVERT_TZ': <function MySQL.Parser.<lambda>>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TimeFromParts'>>, 'MONTHNAME': <function MySQL.Parser.<lambda>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ArrayUniqueAgg'>>, 'MONTHS_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.AddMonths'>>, 'REGEXP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.RegexpLike'>>, 'TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.TsOrDsToDate'>>}
FUNCTION_PARSERS =
{'CAST': <function Parser.<lambda>>, 'CONVERT': <function Parser.<lambda>>, 'DECODE': <function Parser.<lambda>>, 'EXTRACT': <function Parser.<lambda>>, 'GAP_FILL': <function Parser.<lambda>>, 'JSON_OBJECT': <function Parser.<lambda>>, 'JSON_OBJECTAGG': <function Parser.<lambda>>, 'JSON_TABLE': <function Parser.<lambda>>, 'MATCH': <function Parser.<lambda>>, 'NORMALIZE': <function Parser.<lambda>>, 'OPENJSON': <function Parser.<lambda>>, 'OVERLAY': <function Parser.<lambda>>, 'POSITION': <function Parser.<lambda>>, 'PREDICT': <function Parser.<lambda>>, 'SAFE_CAST': <function Parser.<lambda>>, 'STRING_AGG': <function Parser.<lambda>>, 'SUBSTRING': <function Parser.<lambda>>, 'TRIM': <function Parser.<lambda>>, 'TRY_CAST': <function Parser.<lambda>>, 'TRY_CONVERT': <function Parser.<lambda>>, 'CHAR': <function MySQL.Parser.<lambda>>, 'VALUES': <function MySQL.Parser.<lambda>>, 'JSON_VALUE': <function MySQL.Parser.<lambda>>}
TABLE_ALIAS_TOKENS =
{<TokenType.ROWS: 'ROWS'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.RENAME: 'RENAME'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.SOURCE: 'SOURCE'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.LIST: 'LIST'>, <TokenType.TIME: 'TIME'>, <TokenType.INET: 'INET'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.VAR: 'VAR'>, <TokenType.DETACH: 'DETACH'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TABLE: 'TABLE'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.DATE: 'DATE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.YEAR: 'YEAR'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.MAP: 'MAP'>, <TokenType.BIT: 'BIT'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.FINAL: 'FINAL'>, <TokenType.VECTOR: 'VECTOR'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.ANY: 'ANY'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.DATE32: 'DATE32'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ALL: 'ALL'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.KILL: 'KILL'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.MODEL: 'MODEL'>, <TokenType.NESTED: 'NESTED'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.SHOW: 'SHOW'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.FALSE: 'FALSE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.SOME: 'SOME'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.ANTI: 'ANTI'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.IPV4: 'IPV4'>, <TokenType.UINT256: 'UINT256'>, <TokenType.ATTACH: 'ATTACH'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.SINK: 'SINK'>, <TokenType.TOP: 'TOP'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.DECIMAL128: 'DECIMAL128'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.SUPER: 'SUPER'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.VIEW: 'VIEW'>, <TokenType.CHAR: 'CHAR'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.TEXT: 'TEXT'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.MONEY: 'MONEY'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.FILTER: 'FILTER'>, <TokenType.MERGE: 'MERGE'>, <TokenType.INDEX: 'INDEX'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.CASE: 'CASE'>, <TokenType.DECIMAL32: 'DECIMAL32'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DELETE: 'DELETE'>, <TokenType.MULTIPOLYGON: 'MULTIPOLYGON'>, <TokenType.RING: 'RING'>, <TokenType.DECIMAL256: 'DECIMAL256'>, <TokenType.NAME: 'NAME'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.SEMI: 'SEMI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DIV: 'DIV'>, <TokenType.POLYGON: 'POLYGON'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.NULL: 'NULL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.CUBE: 'CUBE'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UINT128: 'UINT128'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.MULTILINESTRING: 'MULTILINESTRING'>, <TokenType.TAG: 'TAG'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.UINT: 'UINT'>, <TokenType.ASC: 'ASC'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.DESC: 'DESC'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.TRUE: 'TRUE'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.CACHE: 'CACHE'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.ROW: 'ROW'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SET: 'SET'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.INT: 'INT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.POINT: 'POINT'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.JSON: 'JSON'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.UUID: 'UUID'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.XML: 'XML'>, <TokenType.INT256: 'INT256'>, <TokenType.DECIMAL64: 'DECIMAL64'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.FIRST: 'FIRST'>, <TokenType.INT128: 'INT128'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.IS: 'IS'>, <TokenType.JSONB: 'JSONB'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LINESTRING: 'LINESTRING'>, <TokenType.NEXT: 'NEXT'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.DATETIME: 'DATETIME'>}
SHOW_TRIE: Dict =
{'BINARY': {'LOGS': {0: True}}, 'MASTER': {'LOGS': {0: True}, 'STATUS': {0: True}}, 'BINLOG': {'EVENTS': {0: True}}, 'CHARACTER': {'SET': {0: True}}, 'CHARSET': {0: True}, 'COLLATION': {0: True}, 'FULL': {'COLUMNS': {0: True}, 'PROCESSLIST': {0: True}, 'TABLES': {0: True}}, 'COLUMNS': {0: True}, 'CREATE': {'DATABASE': {0: True}, 'EVENT': {0: True}, 'FUNCTION': {0: True}, 'PROCEDURE': {0: True}, 'TABLE': {0: True}, 'TRIGGER': {0: True}, 'VIEW': {0: True}}, 'DATABASES': {0: True}, 'SCHEMAS': {0: True}, 'ENGINE': {0: True}, 'STORAGE': {'ENGINES': {0: True}}, 'ENGINES': {0: True}, 'ERRORS': {0: True}, 'EVENTS': {0: True}, 'FUNCTION': {'CODE': {0: True}, 'STATUS': {0: True}}, 'GRANTS': {0: True}, 'INDEX': {0: True}, 'OPEN': {'TABLES': {0: True}}, 'PLUGINS': {0: True}, 'PROCEDURE': {'CODE': {0: True}, 'STATUS': {0: True}}, 'PRIVILEGES': {0: True}, 'PROCESSLIST': {0: True}, 'PROFILE': {0: True}, 'PROFILES': {0: True}, 'RELAYLOG': {'EVENTS': {0: True}}, 'REPLICAS': {0: True}, 'SLAVE': {'HOSTS': {0: True}, 'STATUS': {0: True}}, 'REPLICA': {'STATUS': {0: True}}, 'GLOBAL': {'STATUS': {0: True}, 'VARIABLES': {0: True}}, 'SESSION': {'STATUS': {0: True}, 'VARIABLES': {0: True}}, 'STATUS': {0: True}, 'TABLE': {'STATUS': {0: True}}, 'TABLES': {0: True}, 'TRIGGERS': {0: True}, 'VARIABLES': {0: True}, 'WARNINGS': {0: True}}
SET_TRIE: Dict =
{'GLOBAL': {0: True}, 'LOCAL': {0: True}, 'SESSION': {0: True}, 'TRANSACTION': {0: True}, 'PERSIST': {0: True}, 'PERSIST_ONLY': {0: True}, 'CHARACTER': {'SET': {0: True}}, 'CHARSET': {0: True}, 'NAMES': {0: True}}
Inherited Members
- sqlglot.parser.Parser
- Parser
- NO_PAREN_FUNCTIONS
- STRUCT_TYPE_TOKENS
- NESTED_TYPE_TOKENS
- AGGREGATE_TYPE_TOKENS
- SIGNED_TO_UNSIGNED_TYPE_TOKEN
- SUBQUERY_PREDICATES
- RESERVED_TOKENS
- DB_CREATABLES
- CREATABLES
- ALTERABLES
- ID_VAR_TOKENS
- INTERVAL_VARS
- ALIAS_TOKENS
- ARRAY_CONSTRUCTORS
- COMMENT_TABLE_ALIAS_TOKENS
- UPDATE_ALIAS_TOKENS
- TRIM_TYPES
- ASSIGNMENT
- EQUALITY
- COMPARISON
- BITWISE
- TERM
- FACTOR
- EXPONENT
- TIMES
- TIMESTAMPS
- SET_OPERATIONS
- JOIN_METHODS
- JOIN_SIDES
- JOIN_KINDS
- JOIN_HINTS
- LAMBDAS
- COLUMN_OPERATORS
- EXPRESSION_PARSERS
- UNARY_PARSERS
- STRING_PARSERS
- NUMERIC_PARSERS
- PRIMARY_PARSERS
- PLACEHOLDER_PARSERS
- ALTER_ALTER_PARSERS
- NO_PAREN_FUNCTION_PARSERS
- INVALID_FUNC_NAME_TOKENS
- FUNCTIONS_WITH_ALIASED_ARGS
- KEY_VALUE_DEFINITIONS
- QUERY_MODIFIER_PARSERS
- TYPE_LITERAL_PARSERS
- TYPE_CONVERTERS
- DDL_SELECT_TOKENS
- PRE_VOLATILE_TOKENS
- TRANSACTION_KIND
- TRANSACTION_CHARACTERISTICS
- CONFLICT_ACTIONS
- CREATE_SEQUENCE
- ISOLATED_LOADING_OPTIONS
- USABLES
- CAST_ACTIONS
- SCHEMA_BINDING_OPTIONS
- PROCEDURE_OPTIONS
- EXECUTE_AS_OPTIONS
- KEY_CONSTRAINT_OPTIONS
- INSERT_ALTERNATIVES
- CLONE_KEYWORDS
- HISTORICAL_DATA_PREFIX
- HISTORICAL_DATA_KIND
- OPCLASS_FOLLOW_KEYWORDS
- OPTYPE_FOLLOW_TOKENS
- TABLE_INDEX_HINT_TOKENS
- VIEW_ATTRIBUTES
- WINDOW_ALIAS_TOKENS
- WINDOW_BEFORE_PAREN_TOKENS
- WINDOW_SIDES
- JSON_KEY_VALUE_SEPARATOR_TOKENS
- FETCH_TOKENS
- ADD_CONSTRAINT_TOKENS
- DISTINCT_TOKENS
- NULL_TOKENS
- UNNEST_OFFSET_ALIAS_TOKENS
- SELECT_START_TOKENS
- COPY_INTO_VARLEN_OPTIONS
- IS_JSON_PREDICATE_KIND
- ODBC_DATETIME_LITERALS
- ON_CONDITION_TOKENS
- PRIVILEGE_FOLLOW_TOKENS
- DESCRIBE_STYLES
- STRICT_CAST
- PREFIXED_PIVOT_COLUMNS
- IDENTIFY_PIVOT_STRINGS
- ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN
- TABLESAMPLE_CSV
- DEFAULT_SAMPLING_METHOD
- SET_REQUIRES_ASSIGNMENT_DELIMITER
- TRIM_PATTERN_FIRST
- MODIFIERS_ATTACHED_TO_SET_OP
- SET_OP_MODIFIERS
- NO_PAREN_IF_COMMANDS
- JSON_ARROWS_REQUIRE_JSON_TYPE
- COLON_IS_VARIANT_EXTRACT
- SUPPORTS_IMPLICIT_UNNEST
- INTERVAL_SPANS
- WRAPPED_TRANSFORM_COLUMN_CONSTRAINT
- error_level
- error_message_context
- max_errors
- dialect
- reset
- parse
- parse_into
- check_errors
- raise_error
- expression
- validate_expression
- errors
- sql
- sqlglot.dialects.mysql.MySQL.Parser
- FUNC_TOKENS
- CONJUNCTION
- DISJUNCTION
- RANGE_PARSERS
- STATEMENT_PARSERS
- SHOW_PARSERS
- PROPERTY_PARSERS
- SET_PARSERS
- CONSTRAINT_PARSERS
- ALTER_PARSERS
- SCHEMA_UNNAMED_CONSTRAINTS
- PROFILE_TYPES
- TYPE_TOKENS
- ENUM_TYPE_TOKENS
- OPERATION_MODIFIERS
- LOG_DEFAULTS_TO_LN
- STRING_ALIASES
- VALUES_FOLLOWED_BY_PAREN
- SUPPORTS_PARTITION_SELECTION
42 class Generator(MySQL.Generator): 43 LAST_DAY_SUPPORTS_DATE_PART = False 44 VARCHAR_REQUIRES_SIZE = False 45 46 TYPE_MAPPING = { 47 **MySQL.Generator.TYPE_MAPPING, 48 exp.DataType.Type.TEXT: "STRING", 49 exp.DataType.Type.TIMESTAMP: "DATETIME", 50 exp.DataType.Type.TIMESTAMPTZ: "DATETIME", 51 } 52 53 CAST_MAPPING = {} 54 TIMESTAMP_FUNC_TYPES = set() 55 56 TRANSFORMS = { 57 **MySQL.Generator.TRANSFORMS, 58 exp.AddMonths: rename_func("MONTHS_ADD"), 59 exp.ApproxDistinct: approx_count_distinct_sql, 60 exp.ArgMax: rename_func("MAX_BY"), 61 exp.ArgMin: rename_func("MIN_BY"), 62 exp.ArrayAgg: rename_func("COLLECT_LIST"), 63 exp.ArrayUniqueAgg: rename_func("COLLECT_SET"), 64 exp.CurrentTimestamp: lambda self, _: self.func("NOW"), 65 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, unit_to_str(e)), 66 exp.GroupConcat: lambda self, e: self.func( 67 "GROUP_CONCAT", e.this, e.args.get("separator") or exp.Literal.string(",") 68 ), 69 exp.JSONExtractScalar: lambda self, e: self.func("JSON_EXTRACT", e.this, e.expression), 70 exp.Lag: _lag_lead_sql, 71 exp.Lead: _lag_lead_sql, 72 exp.Map: rename_func("ARRAY_MAP"), 73 exp.RegexpLike: rename_func("REGEXP"), 74 exp.RegexpSplit: rename_func("SPLIT_BY_STRING"), 75 exp.Split: rename_func("SPLIT_BY_STRING"), 76 exp.StringToArray: rename_func("SPLIT_BY_STRING"), 77 exp.StrToUnix: lambda self, e: self.func("UNIX_TIMESTAMP", e.this, self.format_time(e)), 78 exp.TimeStrToDate: rename_func("TO_DATE"), 79 exp.TsOrDsAdd: lambda self, e: self.func("DATE_ADD", e.this, e.expression), 80 exp.TsOrDsToDate: lambda self, e: self.func("TO_DATE", e.this), 81 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), 82 exp.TimestampTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, unit_to_str(e)), 83 exp.UnixToStr: lambda self, e: self.func( 84 "FROM_UNIXTIME", e.this, time_format("doris")(self, e) 85 ), 86 exp.UnixToTime: rename_func("FROM_UNIXTIME"), 87 } 88 89 # https://github.com/apache/doris/blob/e4f41dbf1ec03f5937fdeba2ee1454a20254015b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4#L93 90 RESERVED_KEYWORDS = { 91 "account_lock", 92 "account_unlock", 93 "add", 94 "adddate", 95 "admin", 96 "after", 97 "agg_state", 98 "aggregate", 99 "alias", 100 "all", 101 "alter", 102 "analyze", 103 "analyzed", 104 "and", 105 "anti", 106 "append", 107 "array", 108 "array_range", 109 "as", 110 "asc", 111 "at", 112 "authors", 113 "auto", 114 "auto_increment", 115 "backend", 116 "backends", 117 "backup", 118 "begin", 119 "belong", 120 "between", 121 "bigint", 122 "bin", 123 "binary", 124 "binlog", 125 "bitand", 126 "bitmap", 127 "bitmap_union", 128 "bitor", 129 "bitxor", 130 "blob", 131 "boolean", 132 "brief", 133 "broker", 134 "buckets", 135 "build", 136 "builtin", 137 "bulk", 138 "by", 139 "cached", 140 "call", 141 "cancel", 142 "case", 143 "cast", 144 "catalog", 145 "catalogs", 146 "chain", 147 "char", 148 "character", 149 "charset", 150 "check", 151 "clean", 152 "cluster", 153 "clusters", 154 "collate", 155 "collation", 156 "collect", 157 "column", 158 "columns", 159 "comment", 160 "commit", 161 "committed", 162 "compact", 163 "complete", 164 "config", 165 "connection", 166 "connection_id", 167 "consistent", 168 "constraint", 169 "constraints", 170 "convert", 171 "copy", 172 "count", 173 "create", 174 "creation", 175 "cron", 176 "cross", 177 "cube", 178 "current", 179 "current_catalog", 180 "current_date", 181 "current_time", 182 "current_timestamp", 183 "current_user", 184 "data", 185 "database", 186 "databases", 187 "date", 188 "date_add", 189 "date_ceil", 190 "date_diff", 191 "date_floor", 192 "date_sub", 193 "dateadd", 194 "datediff", 195 "datetime", 196 "datetimev2", 197 "datev2", 198 "datetimev1", 199 "datev1", 200 "day", 201 "days_add", 202 "days_sub", 203 "decimal", 204 "decimalv2", 205 "decimalv3", 206 "decommission", 207 "default", 208 "deferred", 209 "delete", 210 "demand", 211 "desc", 212 "describe", 213 "diagnose", 214 "disk", 215 "distinct", 216 "distinctpc", 217 "distinctpcsa", 218 "distributed", 219 "distribution", 220 "div", 221 "do", 222 "doris_internal_table_id", 223 "double", 224 "drop", 225 "dropp", 226 "dual", 227 "duplicate", 228 "dynamic", 229 "else", 230 "enable", 231 "encryptkey", 232 "encryptkeys", 233 "end", 234 "ends", 235 "engine", 236 "engines", 237 "enter", 238 "errors", 239 "events", 240 "every", 241 "except", 242 "exclude", 243 "execute", 244 "exists", 245 "expired", 246 "explain", 247 "export", 248 "extended", 249 "external", 250 "extract", 251 "failed_login_attempts", 252 "false", 253 "fast", 254 "feature", 255 "fields", 256 "file", 257 "filter", 258 "first", 259 "float", 260 "follower", 261 "following", 262 "for", 263 "foreign", 264 "force", 265 "format", 266 "free", 267 "from", 268 "frontend", 269 "frontends", 270 "full", 271 "function", 272 "functions", 273 "generic", 274 "global", 275 "grant", 276 "grants", 277 "graph", 278 "group", 279 "grouping", 280 "groups", 281 "hash", 282 "having", 283 "hdfs", 284 "help", 285 "histogram", 286 "hll", 287 "hll_union", 288 "hostname", 289 "hour", 290 "hub", 291 "identified", 292 "if", 293 "ignore", 294 "immediate", 295 "in", 296 "incremental", 297 "index", 298 "indexes", 299 "infile", 300 "inner", 301 "insert", 302 "install", 303 "int", 304 "integer", 305 "intermediate", 306 "intersect", 307 "interval", 308 "into", 309 "inverted", 310 "ipv4", 311 "ipv6", 312 "is", 313 "is_not_null_pred", 314 "is_null_pred", 315 "isnull", 316 "isolation", 317 "job", 318 "jobs", 319 "join", 320 "json", 321 "jsonb", 322 "key", 323 "keys", 324 "kill", 325 "label", 326 "largeint", 327 "last", 328 "lateral", 329 "ldap", 330 "ldap_admin_password", 331 "left", 332 "less", 333 "level", 334 "like", 335 "limit", 336 "lines", 337 "link", 338 "list", 339 "load", 340 "local", 341 "localtime", 342 "localtimestamp", 343 "location", 344 "lock", 345 "logical", 346 "low_priority", 347 "manual", 348 "map", 349 "match", 350 "match_all", 351 "match_any", 352 "match_phrase", 353 "match_phrase_edge", 354 "match_phrase_prefix", 355 "match_regexp", 356 "materialized", 357 "max", 358 "maxvalue", 359 "memo", 360 "merge", 361 "migrate", 362 "migrations", 363 "min", 364 "minus", 365 "minute", 366 "modify", 367 "month", 368 "mtmv", 369 "name", 370 "names", 371 "natural", 372 "negative", 373 "never", 374 "next", 375 "ngram_bf", 376 "no", 377 "non_nullable", 378 "not", 379 "null", 380 "nulls", 381 "observer", 382 "of", 383 "offset", 384 "on", 385 "only", 386 "open", 387 "optimized", 388 "or", 389 "order", 390 "outer", 391 "outfile", 392 "over", 393 "overwrite", 394 "parameter", 395 "parsed", 396 "partition", 397 "partitions", 398 "password", 399 "password_expire", 400 "password_history", 401 "password_lock_time", 402 "password_reuse", 403 "path", 404 "pause", 405 "percent", 406 "period", 407 "permissive", 408 "physical", 409 "plan", 410 "process", 411 "plugin", 412 "plugins", 413 "policy", 414 "preceding", 415 "prepare", 416 "primary", 417 "proc", 418 "procedure", 419 "processlist", 420 "profile", 421 "properties", 422 "property", 423 "quantile_state", 424 "quantile_union", 425 "query", 426 "quota", 427 "random", 428 "range", 429 "read", 430 "real", 431 "rebalance", 432 "recover", 433 "recycle", 434 "refresh", 435 "references", 436 "regexp", 437 "release", 438 "rename", 439 "repair", 440 "repeatable", 441 "replace", 442 "replace_if_not_null", 443 "replica", 444 "repositories", 445 "repository", 446 "resource", 447 "resources", 448 "restore", 449 "restrictive", 450 "resume", 451 "returns", 452 "revoke", 453 "rewritten", 454 "right", 455 "rlike", 456 "role", 457 "roles", 458 "rollback", 459 "rollup", 460 "routine", 461 "row", 462 "rows", 463 "s3", 464 "sample", 465 "schedule", 466 "scheduler", 467 "schema", 468 "schemas", 469 "second", 470 "select", 471 "semi", 472 "sequence", 473 "serializable", 474 "session", 475 "set", 476 "sets", 477 "shape", 478 "show", 479 "signed", 480 "skew", 481 "smallint", 482 "snapshot", 483 "soname", 484 "split", 485 "sql_block_rule", 486 "start", 487 "starts", 488 "stats", 489 "status", 490 "stop", 491 "storage", 492 "stream", 493 "streaming", 494 "string", 495 "struct", 496 "subdate", 497 "sum", 498 "superuser", 499 "switch", 500 "sync", 501 "system", 502 "table", 503 "tables", 504 "tablesample", 505 "tablet", 506 "tablets", 507 "task", 508 "tasks", 509 "temporary", 510 "terminated", 511 "text", 512 "than", 513 "then", 514 "time", 515 "timestamp", 516 "timestampadd", 517 "timestampdiff", 518 "tinyint", 519 "to", 520 "transaction", 521 "trash", 522 "tree", 523 "triggers", 524 "trim", 525 "true", 526 "truncate", 527 "type", 528 "type_cast", 529 "types", 530 "unbounded", 531 "uncommitted", 532 "uninstall", 533 "union", 534 "unique", 535 "unlock", 536 "unsigned", 537 "update", 538 "use", 539 "user", 540 "using", 541 "value", 542 "values", 543 "varchar", 544 "variables", 545 "variant", 546 "vault", 547 "verbose", 548 "version", 549 "view", 550 "warnings", 551 "week", 552 "when", 553 "where", 554 "whitelist", 555 "with", 556 "work", 557 "workload", 558 "write", 559 "xor", 560 "year", 561 }
Generator converts a given syntax tree to the corresponding SQL string.
Arguments:
- pretty: Whether to format the produced SQL string. Default: False.
- identify: Determines when an identifier should be quoted. Possible values are: False (default): Never quote, except in cases where it's mandatory by the dialect. True or 'always': Always quote. 'safe': Only quote identifiers that are case insensitive.
- normalize: Whether to normalize identifiers to lowercase. Default: False.
- pad: The pad size in a formatted string. For example, this affects the indentation of a projection in a query, relative to its nesting level. Default: 2.
- indent: The indentation size in a formatted string. For example, this affects the
indentation of subqueries and filters under a
WHERE
clause. Default: 2. - normalize_functions: How to normalize function names. Possible values are: "upper" or True (default): Convert names to uppercase. "lower": Convert names to lowercase. False: Disables function name normalization.
- unsupported_level: Determines the generator's behavior when it encounters unsupported expressions. Default ErrorLevel.WARN.
- max_unsupported: Maximum number of unsupported messages to include in a raised UnsupportedError. This is only relevant if unsupported_level is ErrorLevel.RAISE. Default: 3
- leading_comma: Whether the comma is leading or trailing in select expressions. This is only relevant when generating in pretty mode. Default: False
- max_text_width: The max number of characters in a segment before creating new lines in pretty mode. The default is on the smaller end because the length only represents a segment and not the true line length. Default: 80
- comments: Whether to preserve comments in the output SQL code. Default: True
TYPE_MAPPING =
{<Type.NCHAR: 'NCHAR'>: 'CHAR', <Type.NVARCHAR: 'NVARCHAR'>: 'VARCHAR', <Type.INET: 'INET'>: 'INET', <Type.ROWVERSION: 'ROWVERSION'>: 'VARBINARY', <Type.UBIGINT: 'UBIGINT'>: 'BIGINT', <Type.UINT: 'UINT'>: 'INT', <Type.UMEDIUMINT: 'UMEDIUMINT'>: 'MEDIUMINT', <Type.USMALLINT: 'USMALLINT'>: 'SMALLINT', <Type.UTINYINT: 'UTINYINT'>: 'TINYINT', <Type.UDECIMAL: 'UDECIMAL'>: 'DECIMAL', <Type.TIMESTAMP: 'TIMESTAMP'>: 'DATETIME', <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>: 'DATETIME', <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>: 'TIMESTAMP', <Type.TEXT: 'TEXT'>: 'STRING'}
TRANSFORMS =
{<class 'sqlglot.expressions.JSONPathFilter'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathKey'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathRecursive'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathRoot'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathScript'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathSelector'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathSlice'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathSubscript'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathUnion'>: <function <lambda>>, <class 'sqlglot.expressions.JSONPathWildcard'>: <function <lambda>>, <class 'sqlglot.expressions.AllowedValuesProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ArrayContainsAll'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ArrayOverlaps'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.AutoRefreshProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.BackupProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.CaseSpecificColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.CharacterSetColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.CharacterSetProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ClusteredColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.CollateColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.CommentColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ConnectByRoot'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.CopyGrantsProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.DateFormatColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.DefaultColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.DynamicProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.EmptyProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.EncodeColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.EphemeralColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ExcludeColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ExecuteAsProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Except'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ExternalProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.GlobalProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.HeapProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.IcebergProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.InheritsProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.InlineLengthColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.InputModelProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Intersect'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.IntervalSpan'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Int64'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.LanguageProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.LocationProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.LogProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.MaterializedProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.NonClusteredColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.NoPrimaryIndexProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.NotForReplicationColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.OnCommitProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.OnProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.OnUpdateColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Operator'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.OutputModelProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.PathColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.PivotAny'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ProjectionPolicyColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.RemoteWithConnectionModelProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ReturnsProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SampleProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SecureProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SecurityProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SetConfigProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SetProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SettingsProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SharingProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SqlReadWriteProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SqlSecurityProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.StabilityProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Stream'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.StreamingTableProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.StrictProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.SwapTable'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.TemporaryProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Tags'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.TitleColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ToMap'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ToTableProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.TransformModelProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.TransientProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Union'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.UnloggedProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.Uuid'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.UppercaseColumnConstraint'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.VarMap'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ViewAttributeProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.VolatileProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.WithJournalTableProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.WithProcedureOptions'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.WithSchemaBindingProperty'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.WithOperator'>: <function Generator.<lambda>>, <class 'sqlglot.expressions.ArrayAgg'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.CurrentDate'>: <function no_paren_current_date_sql>, <class 'sqlglot.expressions.DateDiff'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.DateAdd'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.DateStrToDate'>: <function datestrtodate_sql>, <class 'sqlglot.expressions.DateSub'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.DateTrunc'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.Day'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.DayOfMonth'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.DayOfWeek'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.DayOfYear'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.GroupConcat'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.ILike'>: <function no_ilike_sql>, <class 'sqlglot.expressions.JSONExtractScalar'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.Length'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.Max'>: <function max_or_greatest>, <class 'sqlglot.expressions.Min'>: <function min_or_least>, <class 'sqlglot.expressions.Month'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.NullSafeEQ'>: <function MySQL.Generator.<lambda>>, <class 'sqlglot.expressions.NullSafeNEQ'>: <function MySQL.Generator.<lambda>>, <class 'sqlglot.expressions.Pivot'>: <function no_pivot_sql>, <class 'sqlglot.expressions.Select'>: <function preprocess.<locals>._to_sql>, <class 'sqlglot.expressions.StrPosition'>: <function strposition_to_locate_sql>, <class 'sqlglot.expressions.StrToDate'>: <function _str_to_date_sql>, <class 'sqlglot.expressions.StrToTime'>: <function _str_to_date_sql>, <class 'sqlglot.expressions.Stuff'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.TableSample'>: <function no_tablesample_sql>, <class 'sqlglot.expressions.TimeFromParts'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.TimestampAdd'>: <function date_add_interval_sql.<locals>.func>, <class 'sqlglot.expressions.TimestampDiff'>: <function MySQL.Generator.<lambda>>, <class 'sqlglot.expressions.TimestampSub'>: <function date_add_interval_sql.<locals>.func>, <class 'sqlglot.expressions.TimeStrToUnix'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.TimeStrToTime'>: <function MySQL.Generator.<lambda>>, <class 'sqlglot.expressions.TimeToStr'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.Trim'>: <function trim_sql>, <class 'sqlglot.expressions.TryCast'>: <function no_trycast_sql>, <class 'sqlglot.expressions.TsOrDsAdd'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.TsOrDsDiff'>: <function MySQL.Generator.<lambda>>, <class 'sqlglot.expressions.TsOrDsToDate'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.UnixToTime'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.Week'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.WeekOfYear'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.Year'>: <function _remove_ts_or_ds_to_date.<locals>.func>, <class 'sqlglot.expressions.AddMonths'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.ApproxDistinct'>: <function approx_count_distinct_sql>, <class 'sqlglot.expressions.ArgMax'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.ArgMin'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.ArrayUniqueAgg'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.CurrentTimestamp'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.Lag'>: <function _lag_lead_sql>, <class 'sqlglot.expressions.Lead'>: <function _lag_lead_sql>, <class 'sqlglot.expressions.Map'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.RegexpLike'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.RegexpSplit'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.Split'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.StringToArray'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.StrToUnix'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.TimeStrToDate'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.TimeToUnix'>: <function rename_func.<locals>.<lambda>>, <class 'sqlglot.expressions.TimestampTrunc'>: <function Doris.Generator.<lambda>>, <class 'sqlglot.expressions.UnixToStr'>: <function Doris.Generator.<lambda>>}
RESERVED_KEYWORDS =
{'int', 'timestampdiff', 'string', 'distinct', 'storage', 'schema', 'collect', 'delete', 'view', 'tasks', 'datev1', 'char', 'cancel', 'external', 'integer', 'lines', 'local', 'materialized', 'tablesample', 'value', 'frontend', 'truncate', 'end', 'password', 'connection_id', 'asc', 'describe', 'committed', 'json', 'switch', 'match_regexp', 'natural', 'job', 'permissive', 'password_lock_time', 'schemas', 'identified', 'sum', 'graph', 'variant', 'incremental', 'level', 'workload', 'load', 'frontends', 'export', 'all', 'real', 'low_priority', 'tree', 'returns', 'last', 'duplicate', 'div', 'join', 'demand', 'types', 'copy', 'repair', 'maxvalue', 'bitmap', 'cached', 'tables', 'date_add', 'like', 'modify', 'sample', 'than', 'expired', 'array', 'account_lock', 'intermediate', 'admin', 'failed_login_attempts', 'non_nullable', 'merge', 'date', 'sequence', 'never', 'anti', 'open', 'show', 'bitor', 'variables', 'trash', 'belong', 'over', 'select', 'use', 'outer', 'path', 'percent', 'between', 'ipv4', 'grant', 'recycle', 'nulls', 'replica', 'extended', 'grants', 'current', 'repeatable', 'dynamic', 'query', 'else', 'of', 'and', 'except', 'function', 'rename', 'database', 'localtimestamp', 'migrate', 'password_expire', 'migrations', 'filter', 'doris_internal_table_id', 'update', 'bitxor', 'complete', 'whitelist', 'on', 'year', 'current_catalog', 'catalogs', 'in', 'column', 'auto_increment', 'functions', 'snapshot', 'parsed', 'timestampadd', 'is_not_null_pred', 'clean', 'name', 'read', 'split', 'extract', 'ngram_bf', 'match_phrase', 'false', 'signed', 'isolation', 'temporary', 'infile', 'quota', 'repositories', 'limit', 'date_floor', 'with', 'double', 'days_add', 'bitand', 'partition', 'array_range', 'call', 'process', 'table', 'clusters', 'into', 'role', 'count', 'routine', 'not', 'key', 'disk', 'uninstall', 'timestamp', 'cluster', 'brief', 'hour', 'insert', 'order', 'plugin', 'trim', 'primary', 'datetime', 'distinctpc', 'kill', 'match_phrase_prefix', 'ends', 'group', 'partitions', 'compact', 'mtmv', 'left', 'next', 'write', 'or', 'full', 'label', 'logical', 'superuser', 'current_timestamp', 'cast', 'stop', 'datediff', 'auto', 'immediate', 'lateral', 'foreign', 'list', 'verbose', 'chain', 'password_history', 'cross', 'processlist', 'datev2', 'references', 'jobs', 'events', 'ignore', 'after', 'match_any', 'binary', 'constraints', 'global', 'schedule', 'bulk', 'min', 'unlock', 'offset', 'at', 'distributed', 'following', 'backends', 'task', 'every', 'encryptkeys', 'keys', 'catalog', 'broker', 'prepare', 'dropp', 'quantile_union', 'text', 'encryptkey', 'alias', 'cube', 'do', 'session', 'repository', 'generic', 'account_unlock', 'groups', 'if', 'regexp', 'minute', 'shape', 'interval', 'restrictive', 'config', 'procedure', 'backend', 'rebalance', 'row', 'by', 'float', 'pause', 'struct', 'set', 'date_ceil', 'creation', 'binlog', 'starts', 'decimal', 'data', 'analyze', 'authors', 'link', 'current_time', 'unsigned', 'is', 'jsonb', 'random', 'comment', 'optimized', 'then', 'errors', 'resume', 'semi', 'begin', 'parameter', 'observer', 'rewritten', 'check', 'day', 'tablet', 'consistent', 'create', 'proc', 'agg_state', 'rollback', 'null', 'alter', 'inverted', 'version', 'sync', 'where', 'constraint', 'match', 'resources', 'scheduler', 'unbounded', 'second', 'having', 'negative', 'true', 'preceding', 'bitmap_union', 'decimalv2', 's3', 'replace', 'backup', 'for', 'exclude', 'uncommitted', 'hll_union', 'aggregate', 'when', 'case', 'buckets', 'exists', 'period', 'inner', 'databases', 'system', 'grouping', 'xor', 'decommission', 'to', 'intersect', 'histogram', 'max', 'connection', 'vault', 'explain', 'range', 'physical', 'date_sub', 'tinyint', 'lock', 'current_date', 'decimalv3', 'install', 'manual', 'recover', 'hostname', 'follower', 'collate', 'format', 'default', 'minus', 'rollup', 'subdate', 'soname', 'localtime', 'status', 'enter', 'free', 'streaming', 'user', 'help', 'serializable', 'hash', 'memo', 'largeint', 'build', 'as', 'terminated', 'distribution', 'collation', 'no', 'roles', 'profile', 'is_null_pred', 'match_phrase_edge', 'properties', 'rows', 'warnings', 'fast', 'engines', 'execute', 'isnull', 'month', 'values', 'week', 'replace_if_not_null', 'skew', 'property', 'password_reuse', 'sql_block_rule', 'datetimev2', 'stream', 'map', 'release', 'fields', 'unique', 'enable', 'days_sub', 'boolean', 'ldap_admin_password', 'file', 'dateadd', 'datetimev1', 'transaction', 'bigint', 'force', 'plugins', 'tablets', 'cron', 'start', 'hll', 'diagnose', 'less', 'outfile', 'feature', 'using', 'ipv6', 'columns', 'commit', 'distinctpcsa', 'analyzed', 'sets', 'policy', 'date_diff', 'quantile_state', 'names', 'index', 'location', 'convert', 'overwrite', 'stats', 'current_user', 'smallint', 'charset', 'adddate', 'append', 'engine', 'deferred', 'type_cast', 'revoke', 'only', 'restore', 'union', 'drop', 'from', 'plan', 'rlike', 'dual', 'character', 'hdfs', 'time', 'bin', 'type', 'match_all', 'blob', 'hub', 'work', 'ldap', 'varchar', 'first', 'resource', 'desc', 'add', 'builtin', 'refresh', 'right', 'indexes', 'triggers'}
AFTER_HAVING_MODIFIER_TRANSFORMS =
{'windows': <function Generator.<lambda>>, 'qualify': <function Generator.<lambda>>}
Inherited Members
- sqlglot.generator.Generator
- Generator
- IGNORE_NULLS_IN_FUNC
- EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE
- CREATE_FUNCTION_RETURN_AS
- MATCHED_BY_SOURCE
- SINGLE_STRING_INTERVAL
- RENAME_TABLE_WITH_DB
- GROUPINGS_SEP
- INDEX_ON
- QUERY_HINTS
- IS_BOOL_ALLOWED
- LIMIT_IS_TOP
- RETURNING_END
- EXTRACT_ALLOWS_QUOTES
- TZ_TO_WITH_TIME_ZONE
- ALTER_TABLE_INCLUDE_COLUMN_KEYWORD
- UNNEST_WITH_ORDINALITY
- AGGREGATE_FILTER_SUPPORTED
- SEMI_ANTI_JOIN_WITH_SIDE
- COMPUTED_COLUMN_WITH_TYPE
- SUPPORTS_TABLE_COPY
- TABLESAMPLE_REQUIRES_PARENS
- TABLESAMPLE_SIZE_IS_ROWS
- TABLESAMPLE_KEYWORDS
- TABLESAMPLE_WITH_METHOD
- TABLESAMPLE_SEED_KEYWORD
- COLLATE_IS_FUNC
- DATA_TYPE_SPECIFIERS_ALLOWED
- ENSURE_BOOLS
- CTE_RECURSIVE_KEYWORD_REQUIRED
- SUPPORTS_SINGLE_ARG_CONCAT
- SUPPORTS_TABLE_ALIAS_COLUMNS
- UNPIVOT_ALIASES_ARE_IDENTIFIERS
- INSERT_OVERWRITE
- SUPPORTS_SELECT_INTO
- SUPPORTS_UNLOGGED_TABLES
- SUPPORTS_CREATE_TABLE_LIKE
- LIKE_PROPERTY_INSIDE_SCHEMA
- MULTI_ARG_DISTINCT
- JSON_PATH_SINGLE_QUOTE_ESCAPE
- SUPPORTED_JSON_PATH_PARTS
- CAN_IMPLEMENT_ARRAY_ANY
- SET_OP_MODIFIERS
- COPY_PARAMS_ARE_WRAPPED
- COPY_PARAMS_EQ_REQUIRED
- COPY_HAS_INTO_KEYWORD
- STAR_EXCEPT
- HEX_FUNC
- WITH_PROPERTIES_PREFIX
- QUOTE_JSON_PATH
- SUPPORTS_EXPLODING_PROJECTIONS
- ARRAY_CONCAT_IS_VAR_LEN
- SUPPORTS_CONVERT_TIMEZONE
- SUPPORTS_UNIX_SECONDS
- ARRAY_SIZE_NAME
- ARRAY_SIZE_DIM_REQUIRED
- TIME_PART_SINGULARS
- TOKEN_MAPPING
- STRUCT_DELIMITER
- PARAMETER_TOKEN
- NAMED_PLACEHOLDER_TOKEN
- EXPRESSION_PRECEDES_PROPERTIES_CREATABLES
- WITH_SEPARATED_COMMENTS
- EXCLUDE_COMMENTS
- UNWRAPPED_INTERVAL_VALUES
- PARAMETERIZABLE_TEXT_TYPES
- EXPRESSIONS_WITHOUT_NESTED_CTES
- SENTINEL_LINE_BREAK
- pretty
- identify
- normalize
- pad
- unsupported_level
- max_unsupported
- leading_comma
- max_text_width
- comments
- dialect
- normalize_functions
- unsupported_messages
- generate
- preprocess
- unsupported
- sep
- seg
- pad_comment
- maybe_comment
- wrap
- no_identify
- normalize_func
- indent
- sql
- uncache_sql
- cache_sql
- characterset_sql
- column_parts
- column_sql
- columnposition_sql
- columndef_sql
- columnconstraint_sql
- computedcolumnconstraint_sql
- autoincrementcolumnconstraint_sql
- compresscolumnconstraint_sql
- generatedasidentitycolumnconstraint_sql
- generatedasrowcolumnconstraint_sql
- periodforsystemtimeconstraint_sql
- notnullcolumnconstraint_sql
- transformcolumnconstraint_sql
- primarykeycolumnconstraint_sql
- uniquecolumnconstraint_sql
- createable_sql
- create_sql
- sequenceproperties_sql
- clone_sql
- describe_sql
- heredoc_sql
- prepend_ctes
- with_sql
- cte_sql
- tablealias_sql
- bitstring_sql
- hexstring_sql
- bytestring_sql
- unicodestring_sql
- rawstring_sql
- datatypeparam_sql
- directory_sql
- delete_sql
- drop_sql
- set_operation
- set_operations
- fetch_sql
- filter_sql
- hint_sql
- indexparameters_sql
- index_sql
- identifier_sql
- hex_sql
- lowerhex_sql
- inputoutputformat_sql
- national_sql
- partition_sql
- properties_sql
- root_properties
- properties
- with_properties
- locate_properties
- property_name
- property_sql
- likeproperty_sql
- fallbackproperty_sql
- journalproperty_sql
- freespaceproperty_sql
- checksumproperty_sql
- mergeblockratioproperty_sql
- datablocksizeproperty_sql
- blockcompressionproperty_sql
- isolatedloadingproperty_sql
- partitionboundspec_sql
- partitionedofproperty_sql
- lockingproperty_sql
- withdataproperty_sql
- withsystemversioningproperty_sql
- insert_sql
- introducer_sql
- kill_sql
- pseudotype_sql
- objectidentifier_sql
- onconflict_sql
- returning_sql
- rowformatdelimitedproperty_sql
- withtablehint_sql
- indextablehint_sql
- historicaldata_sql
- table_parts
- table_sql
- tablesample_sql
- pivot_sql
- version_sql
- tuple_sql
- update_sql
- values_sql
- var_sql
- into_sql
- from_sql
- groupingsets_sql
- rollup_sql
- cube_sql
- group_sql
- having_sql
- connect_sql
- prior_sql
- join_sql
- lambda_sql
- lateral_op
- lateral_sql
- limit_sql
- offset_sql
- setitem_sql
- set_sql
- pragma_sql
- lock_sql
- literal_sql
- escape_str
- loaddata_sql
- null_sql
- boolean_sql
- order_sql
- withfill_sql
- cluster_sql
- distribute_sql
- sort_sql
- ordered_sql
- matchrecognizemeasure_sql
- matchrecognize_sql
- query_modifiers
- options_modifier
- queryoption_sql
- offset_limit_modifiers
- after_limit_modifiers
- select_sql
- schema_sql
- schema_columns_sql
- star_sql
- parameter_sql
- sessionparameter_sql
- placeholder_sql
- subquery_sql
- qualify_sql
- unnest_sql
- prewhere_sql
- where_sql
- window_sql
- partition_by_sql
- windowspec_sql
- withingroup_sql
- between_sql
- bracket_offset_expressions
- bracket_sql
- all_sql
- any_sql
- exists_sql
- case_sql
- constraint_sql
- nextvaluefor_sql
- trim_sql
- convert_concat_args
- concat_sql
- concatws_sql
- check_sql
- foreignkey_sql
- primarykey_sql
- if_sql
- matchagainst_sql
- jsonkeyvalue_sql
- jsonpath_sql
- json_path_part
- formatjson_sql
- jsonobject_sql
- jsonobjectagg_sql
- jsonarray_sql
- jsonarrayagg_sql
- jsoncolumndef_sql
- jsonschema_sql
- jsontable_sql
- openjsoncolumndef_sql
- openjson_sql
- in_sql
- in_unnest_op
- interval_sql
- return_sql
- reference_sql
- anonymous_sql
- paren_sql
- neg_sql
- not_sql
- alias_sql
- pivotalias_sql
- aliases_sql
- atindex_sql
- fromtimezone_sql
- add_sql
- and_sql
- or_sql
- xor_sql
- connector_sql
- bitwiseand_sql
- bitwiseleftshift_sql
- bitwisenot_sql
- bitwiseor_sql
- bitwiserightshift_sql
- bitwisexor_sql
- currentdate_sql
- collate_sql
- command_sql
- comment_sql
- mergetreettlaction_sql
- mergetreettl_sql
- transaction_sql
- commit_sql
- rollback_sql
- alterdiststyle_sql
- altersortkey_sql
- alterrename_sql
- renamecolumn_sql
- alterset_sql
- alter_sql
- add_column_sql
- droppartition_sql
- addconstraint_sql
- distinct_sql
- ignorenulls_sql
- respectnulls_sql
- havingmax_sql
- intdiv_sql
- div_sql
- overlaps_sql
- distance_sql
- dot_sql
- eq_sql
- propertyeq_sql
- escape_sql
- glob_sql
- gt_sql
- gte_sql
- ilike_sql
- ilikeany_sql
- is_sql
- like_sql
- likeany_sql
- similarto_sql
- lt_sql
- lte_sql
- mod_sql
- mul_sql
- neq_sql
- nullsafeeq_sql
- nullsafeneq_sql
- slice_sql
- sub_sql
- trycast_sql
- try_sql
- log_sql
- use_sql
- binary
- function_fallback_sql
- func
- format_args
- too_wide
- format_time
- expressions
- op_expressions
- naked_property
- tag_sql
- token_sql
- userdefinedfunction_sql
- joinhint_sql
- kwarg_sql
- when_sql
- merge_sql
- tochar_sql
- tonumber_sql
- dictproperty_sql
- dictrange_sql
- dictsubproperty_sql
- duplicatekeyproperty_sql
- distributedbyproperty_sql
- oncluster_sql
- clusteredbyproperty_sql
- anyvalue_sql
- querytransform_sql
- indexconstraintoption_sql
- checkcolumnconstraint_sql
- indexcolumnconstraint_sql
- nvl2_sql
- comprehension_sql
- columnprefix_sql
- opclass_sql
- predict_sql
- forin_sql
- refresh_sql
- toarray_sql
- tsordstotime_sql
- tsordstotimestamp_sql
- tsordstodatetime_sql
- tsordstodate_sql
- unixdate_sql
- lastday_sql
- dateadd_sql
- arrayany_sql
- struct_sql
- partitionrange_sql
- truncatetable_sql
- convert_sql
- copyparameter_sql
- credentials_sql
- copy_sql
- semicolon_sql
- datadeletionproperty_sql
- maskingpolicycolumnconstraint_sql
- gapfill_sql
- scope_resolution
- scoperesolution_sql
- parsejson_sql
- rand_sql
- changes_sql
- pad_sql
- summarize_sql
- explodinggenerateseries_sql
- arrayconcat_sql
- json_sql
- jsonvalue_sql
- conditionalinsert_sql
- multitableinserts_sql
- oncondition_sql
- jsonexists_sql
- arrayagg_sql
- apply_sql
- grant_sql
- grantprivilege_sql
- grantprincipal_sql
- columns_sql
- overlay_sql
- todouble_sql
- string_sql
- median_sql
- overflowtruncatebehavior_sql
- unixseconds_sql
- arraysize_sql
- attach_sql
- detach_sql
- attachoption_sql
- featuresattime_sql
- watermarkcolumnconstraint_sql
- encodeproperty_sql
- includeproperty_sql
- sqlglot.dialects.mysql.MySQL.Generator
- INTERVAL_ALLOWS_PLURAL_FORM
- LOCKING_READS_SUPPORTED
- NULL_ORDERING_SUPPORTED
- JOIN_HINTS
- TABLE_HINTS
- DUPLICATE_KEY_UPDATE_WITH_SET
- QUERY_HINT_SEP
- VALUES_AS_TABLE
- NVL2_SUPPORTED
- JSON_TYPE_REQUIRED_FOR_EXTRACTION
- JSON_PATH_BRACKETED_KEY_SUPPORTED
- JSON_KEY_VALUE_PAIR_SEP
- SUPPORTS_TO_NUMBER
- PARSE_JSON_NAME
- PAD_FILL_PATTERN_IS_REQUIRED
- WRAP_DERIVED_VALUES
- SUPPORTS_MEDIAN
- UNSIGNED_TYPE_MAPPING
- TIMESTAMP_TYPE_MAPPING
- PROPERTIES_LOCATION
- LIMIT_FETCH
- LIMIT_ONLY_LITERALS
- CHAR_CAST_MAPPING
- SIGNED_CAST_MAPPING
- array_sql
- arraycontainsall_sql
- dpipe_sql
- extract_sql
- datatype_sql
- jsonarraycontains_sql
- cast_sql
- show_sql
- altercolumn_sql
- chr_sql
- timestamptrunc_sql
- converttimezone_sql
- attimezone_sql