Polyglot SQL API Documentation - v0.1.0
    Preparing search index...

    Type Alias Expression

    Expression:
        | { literal: Literal }
        | { boolean: BooleanLiteral }
        | { null: Null }
        | { identifier: Identifier }
        | { column: Column }
        | { table: TableRef }
        | { star: Star }
        | { braced_wildcard: Expression }
        | { select: Select }
        | { union: Union }
        | { intersect: Intersect }
        | { except: Except }
        | { subquery: Subquery }
        | { pivot: Pivot }
        | { pivot_alias: PivotAlias }
        | { unpivot: Unpivot }
        | { values: Values }
        | { pre_where: PreWhere }
        | { stream: Stream }
        | { using_data: UsingData }
        | { xml_namespace: XmlNamespace }
        | { insert: Insert }
        | { update: Update }
        | { delete: Delete }
        | { copy: CopyStmt }
        | { put: PutStmt }
        | { stage_reference: StageReference }
        | { alias: Alias }
        | { cast: Cast }
        | { collation: CollationExpr }
        | { case: Case }
        | { and: BinaryOp }
        | { or: BinaryOp }
        | { add: BinaryOp }
        | { sub: BinaryOp }
        | { mul: BinaryOp }
        | { div: BinaryOp }
        | { mod: BinaryOp }
        | { eq: BinaryOp }
        | { neq: BinaryOp }
        | { lt: BinaryOp }
        | { lte: BinaryOp }
        | { gt: BinaryOp }
        | { gte: BinaryOp }
        | { like: LikeOp }
        | { i_like: LikeOp }
        | { match: BinaryOp }
        | { bitwise_and: BinaryOp }
        | { bitwise_or: BinaryOp }
        | { bitwise_xor: BinaryOp }
        | { concat: BinaryOp }
        | { adjacent: BinaryOp }
        | { ts_match: BinaryOp }
        | { property_e_q: BinaryOp }
        | { array_contains_all: BinaryOp }
        | { array_contained_by: BinaryOp }
        | { array_overlaps: BinaryOp }
        | { j_s_o_n_b_contains_all_top_keys: BinaryOp }
        | { j_s_o_n_b_contains_any_top_keys: BinaryOp }
        | { j_s_o_n_b_delete_at_path: BinaryOp }
        | { extends_left: BinaryOp }
        | { extends_right: BinaryOp }
        | { not: UnaryOp }
        | { neg: UnaryOp }
        | { bitwise_not: UnaryOp }
        | { in: In }
        | { between: Between }
        | { is_null: IsNull }
        | { is_true: IsTrueFalse }
        | { is_false: IsTrueFalse }
        | { is_json: IsJson }
        | { is: BinaryOp }
        | { exists: Exists }
        | { member_of: BinaryOp }
        | { function: Function }
        | { aggregate_function: AggregateFunction }
        | { window_function: WindowFunction }
        | { from: From }
        | { join: Join }
        | { joined_table: JoinedTable }
        | { where: Where }
        | { group_by: GroupBy }
        | { having: Having }
        | { order_by: OrderBy }
        | { limit: Limit }
        | { offset: Offset }
        | { qualify: Qualify }
        | { with: With }
        | { cte: Cte }
        | { distribute_by: DistributeBy }
        | { cluster_by: ClusterBy }
        | { sort_by: SortBy }
        | { lateral_view: LateralView }
        | { hint: Hint }
        | { pseudocolumn: Pseudocolumn }
        | { connect: Connect }
        | { prior: Prior }
        | { connect_by_root: ConnectByRoot }
        | { match_recognize: MatchRecognize }
        | { ordered: Ordered }
        | { window: WindowSpec }
        | { over: Over }
        | { within_group: WithinGroup }
        | { data_type: DataType }
        | { array: SqlArray }
        | { struct: Struct }
        | { tuple: Tuple }
        | { interval: Interval }
        | { concat_ws: ConcatWs }
        | { substring: SubstringFunc }
        | { upper: UnaryFunc }
        | { lower: UnaryFunc }
        | { length: UnaryFunc }
        | { trim: TrimFunc }
        | { l_trim: UnaryFunc }
        | { r_trim: UnaryFunc }
        | { replace: ReplaceFunc }
        | { reverse: UnaryFunc }
        | { left: LeftRightFunc }
        | { right: LeftRightFunc }
        | { repeat: RepeatFunc }
        | { lpad: PadFunc }
        | { rpad: PadFunc }
        | { split: SplitFunc }
        | { regexp_like: RegexpFunc }
        | { regexp_replace: RegexpReplaceFunc }
        | { regexp_extract: RegexpExtractFunc }
        | { overlay: OverlayFunc }
        | { abs: UnaryFunc }
        | { round: RoundFunc }
        | { floor: FloorFunc }
        | { ceil: CeilFunc }
        | { power: BinaryFunc }
        | { sqrt: UnaryFunc }
        | { cbrt: UnaryFunc }
        | { ln: UnaryFunc }
        | { log: LogFunc }
        | { exp: UnaryFunc }
        | { sign: UnaryFunc }
        | { greatest: VarArgFunc }
        | { least: VarArgFunc }
        | { current_date: CurrentDate }
        | { current_time: CurrentTime }
        | { current_timestamp: CurrentTimestamp }
        | { current_timestamp_l_t_z: CurrentTimestampLTZ }
        | { at_time_zone: AtTimeZone }
        | { date_add: DateAddFunc }
        | { date_sub: DateAddFunc }
        | { date_diff: DateDiffFunc }
        | { date_trunc: DateTruncFunc }
        | { extract: ExtractFunc }
        | { to_date: ToDateFunc }
        | { to_timestamp: ToTimestampFunc }
        | { date: UnaryFunc }
        | { time: UnaryFunc }
        | { date_from_unix_date: UnaryFunc }
        | { unix_date: UnaryFunc }
        | { unix_seconds: UnaryFunc }
        | { unix_millis: UnaryFunc }
        | { unix_micros: UnaryFunc }
        | { unix_to_time_str: BinaryFunc }
        | { time_str_to_date: UnaryFunc }
        | { date_to_di: UnaryFunc }
        | { di_to_date: UnaryFunc }
        | { ts_or_di_to_di: UnaryFunc }
        | { ts_or_ds_to_datetime: UnaryFunc }
        | { ts_or_ds_to_timestamp: UnaryFunc }
        | { year_of_week: UnaryFunc }
        | { year_of_week_iso: UnaryFunc }
        | { coalesce: VarArgFunc }
        | { null_if: BinaryFunc }
        | { if_func: IfFunc }
        | { if_null: BinaryFunc }
        | { nvl: BinaryFunc }
        | { nvl2: Nvl2Func }
        | { try_cast: Cast }
        | { safe_cast: Cast }
        | { count: CountFunc }
        | { sum: AggFunc }
        | { avg: AggFunc }
        | { min: AggFunc }
        | { max: AggFunc }
        | { group_concat: GroupConcatFunc }
        | { string_agg: StringAggFunc }
        | { list_agg: ListAggFunc }
        | { array_agg: AggFunc }
        | { count_if: AggFunc }
        | { sum_if: SumIfFunc }
        | { stddev: AggFunc }
        | { stddev_pop: AggFunc }
        | { stddev_samp: AggFunc }
        | { variance: AggFunc }
        | { var_pop: AggFunc }
        | { var_samp: AggFunc }
        | { median: AggFunc }
        | { mode: AggFunc }
        | { first: AggFunc }
        | { last: AggFunc }
        | { any_value: AggFunc }
        | { approx_distinct: AggFunc }
        | { approx_count_distinct: AggFunc }
        | { approx_percentile: ApproxPercentileFunc }
        | { percentile: PercentileFunc }
        | { logical_and: AggFunc }
        | { logical_or: AggFunc }
        | { skewness: AggFunc }
        | { bitwise_count: UnaryFunc }
        | { array_concat_agg: AggFunc }
        | { array_unique_agg: AggFunc }
        | { bool_xor_agg: AggFunc }
        | { row_number: RowNumber }
        | { rank: Rank }
        | { dense_rank: DenseRank }
        | { n_tile: NTileFunc }
        | { lead: LeadLagFunc }
        | { lag: LeadLagFunc }
        | { first_value: ValueFunc }
        | { last_value: ValueFunc }
        | { nth_value: NthValueFunc }
        | { percent_rank: PercentRank }
        | { cume_dist: CumeDist }
        | { percentile_cont: PercentileFunc }
        | { percentile_disc: PercentileFunc }
        | { contains: BinaryFunc }
        | { starts_with: BinaryFunc }
        | { ends_with: BinaryFunc }
        | { position: PositionFunc }
        | { initcap: UnaryFunc }
        | { ascii: UnaryFunc }
        | { chr: UnaryFunc }
        | { char_func: CharFunc }
        | { soundex: UnaryFunc }
        | { levenshtein: BinaryFunc }
        | { byte_length: UnaryFunc }
        | { hex: UnaryFunc }
        | { lower_hex: UnaryFunc }
        | { unicode: UnaryFunc }
        | { mod_func: BinaryFunc }
        | { random: Random }
        | { rand: Rand }
        | { trunc_func: TruncateFunc }
        | { pi: Pi }
        | { radians: UnaryFunc }
        | { degrees: UnaryFunc }
        | { sin: UnaryFunc }
        | { cos: UnaryFunc }
        | { tan: UnaryFunc }
        | { asin: UnaryFunc }
        | { acos: UnaryFunc }
        | { atan: UnaryFunc }
        | { atan2: BinaryFunc }
        | { is_nan: UnaryFunc }
        | { is_inf: UnaryFunc }
        | { int_div: BinaryFunc }
        | { decode: DecodeFunc }
        | { date_format: DateFormatFunc }
        | { format_date: DateFormatFunc }
        | { year: UnaryFunc }
        | { month: UnaryFunc }
        | { day: UnaryFunc }
        | { hour: UnaryFunc }
        | { minute: UnaryFunc }
        | { second: UnaryFunc }
        | { day_of_week: UnaryFunc }
        | { day_of_week_iso: UnaryFunc }
        | { day_of_month: UnaryFunc }
        | { day_of_year: UnaryFunc }
        | { week_of_year: UnaryFunc }
        | { quarter: UnaryFunc }
        | { add_months: BinaryFunc }
        | { months_between: BinaryFunc }
        | { last_day: LastDayFunc }
        | { next_day: BinaryFunc }
        | { epoch: UnaryFunc }
        | { epoch_ms: UnaryFunc }
        | { from_unixtime: FromUnixtimeFunc }
        | { unix_timestamp: UnixTimestampFunc }
        | { make_date: MakeDateFunc }
        | { make_timestamp: MakeTimestampFunc }
        | { timestamp_trunc: DateTruncFunc }
        | { time_str_to_unix: UnaryFunc }
        | { session_user: SessionUser }
        | { s_h_a: UnaryFunc }
        | { s_h_a1_digest: UnaryFunc }
        | { time_to_unix: UnaryFunc }
        | { array_func: ArrayConstructor }
        | { array_length: UnaryFunc }
        | { array_size: UnaryFunc }
        | { cardinality: UnaryFunc }
        | { array_contains: BinaryFunc }
        | { array_position: BinaryFunc }
        | { array_append: BinaryFunc }
        | { array_prepend: BinaryFunc }
        | { array_concat: VarArgFunc }
        | { array_sort: ArraySortFunc }
        | { array_reverse: UnaryFunc }
        | { array_distinct: UnaryFunc }
        | { array_join: ArrayJoinFunc }
        | { array_to_string: ArrayJoinFunc }
        | { unnest: UnnestFunc }
        | { explode: UnaryFunc }
        | { explode_outer: UnaryFunc }
        | { array_filter: ArrayFilterFunc }
        | { array_transform: ArrayTransformFunc }
        | { array_flatten: UnaryFunc }
        | { array_compact: UnaryFunc }
        | { array_intersect: BinaryFunc }
        | { array_union: BinaryFunc }
        | { array_except: BinaryFunc }
        | { array_remove: BinaryFunc }
        | { array_zip: VarArgFunc }
        | { sequence: SequenceFunc }
        | { generate: SequenceFunc }
        | { exploding_generate_series: SequenceFunc }
        | { to_array: UnaryFunc }
        | { star_map: BinaryFunc }
        | { struct_func: StructConstructor }
        | { struct_extract: StructExtractFunc }
        | { named_struct: NamedStructFunc }
        | { map_func: MapConstructor }
        | { map_from_entries: UnaryFunc }
        | { map_from_arrays: BinaryFunc }
        | { map_keys: UnaryFunc }
        | { map_values: UnaryFunc }
        | { map_contains_key: BinaryFunc }
        | { map_concat: VarArgFunc }
        | { element_at: BinaryFunc }
        | { transform_keys: TransformFunc }
        | { transform_values: TransformFunc }
        | { json_extract: JsonExtractFunc }
        | { json_extract_scalar: JsonExtractFunc }
        | { json_extract_path: JsonPathFunc }
        | { json_array: VarArgFunc }
        | { json_object: JsonObjectFunc }
        | { json_query: JsonExtractFunc }
        | { json_value: JsonExtractFunc }
        | { json_array_length: UnaryFunc }
        | { json_keys: UnaryFunc }
        | { json_type: UnaryFunc }
        | { parse_json: UnaryFunc }
        | { to_json: UnaryFunc }
        | { json_set: JsonModifyFunc }
        | { json_insert: JsonModifyFunc }
        | { json_remove: JsonPathFunc }
        | { json_merge_patch: BinaryFunc }
        | { json_array_agg: JsonArrayAggFunc }
        | { json_object_agg: JsonObjectAggFunc }
        | { convert: ConvertFunc }
        | { typeof: UnaryFunc }
        | { lambda: LambdaExpr }
        | { parameter: Parameter }
        | { placeholder: Placeholder }
        | { named_argument: NamedArgument }
        | { table_argument: TableArgument }
        | { sql_comment: SqlComment }
        | { null_safe_eq: BinaryOp }
        | { null_safe_neq: BinaryOp }
        | { glob: BinaryOp }
        | { similar_to: SimilarToExpr }
        | { any: QuantifiedExpr }
        | { all: QuantifiedExpr }
        | { overlaps: OverlapsExpr }
        | { bitwise_left_shift: BinaryOp }
        | { bitwise_right_shift: BinaryOp }
        | { bitwise_and_agg: AggFunc }
        | { bitwise_or_agg: AggFunc }
        | { bitwise_xor_agg: AggFunc }
        | { subscript: Subscript }
        | { dot: DotAccess }
        | { method_call: MethodCall }
        | { array_slice: ArraySlice }
        | { create_table: CreateTable }
        | { drop_table: DropTable }
        | { alter_table: AlterTable }
        | { create_index: CreateIndex }
        | { drop_index: DropIndex }
        | { create_view: CreateView }
        | { drop_view: DropView }
        | { alter_view: AlterView }
        | { alter_index: AlterIndex }
        | { truncate: Truncate }
        | { use: Use }
        | { cache: Cache }
        | { uncache: Uncache }
        | { load_data: LoadData }
        | { pragma: Pragma }
        | { grant: Grant }
        | { revoke: Revoke }
        | { comment: Comment }
        | { set_statement: SetStatement }
        | { create_schema: CreateSchema }
        | { drop_schema: DropSchema }
        | { drop_namespace: DropNamespace }
        | { create_database: CreateDatabase }
        | { drop_database: DropDatabase }
        | { create_function: CreateFunction }
        | { drop_function: DropFunction }
        | { create_procedure: CreateProcedure }
        | { drop_procedure: DropProcedure }
        | { create_sequence: CreateSequence }
        | { drop_sequence: DropSequence }
        | { alter_sequence: AlterSequence }
        | { create_trigger: CreateTrigger }
        | { drop_trigger: DropTrigger }
        | { create_type: CreateType }
        | { drop_type: DropType }
        | { describe: Describe }
        | { show: Show }
        | { command: Command }
        | { kill: Kill }
        | { execute: ExecuteStatement }
        | { raw: Raw }
        | { paren: Paren }
        | { annotated: Annotated }
        | { refresh: Refresh }
        | { locking_statement: LockingStatement }
        | { sequence_properties: SequenceProperties }
        | { truncate_table: TruncateTable }
        | { clone: Clone }
        | { attach: Attach }
        | { detach: Detach }
        | { install: Install }
        | { summarize: Summarize }
        | { declare: Declare }
        | { declare_item: DeclareItem }
        | { set: Set }
        | { heredoc: Heredoc }
        | { set_item: SetItem }
        | { query_band: QueryBand }
        | { user_defined_function: UserDefinedFunction }
        | { recursive_with_search: RecursiveWithSearch }
        | { projection_def: ProjectionDef }
        | { table_alias: TableAlias }
        | { byte_string: ByteString }
        | { hex_string_expr: HexStringExpr }
        | { unicode_string: UnicodeString }
        | { column_position: ColumnPosition }
        | { column_def: ColumnDef }
        | { alter_column: AlterColumn }
        | { alter_sort_key: AlterSortKey }
        | { alter_set: AlterSet }
        | { rename_column: RenameColumn }
        | { comprehension: Comprehension }
        | { merge_tree_t_t_l_action: MergeTreeTTLAction }
        | { merge_tree_t_t_l: MergeTreeTTL }
        | { index_constraint_option: IndexConstraintOption }
        | { column_constraint: ColumnConstraint }
        | { period_for_system_time_constraint: PeriodForSystemTimeConstraint }
        | { case_specific_column_constraint: CaseSpecificColumnConstraint }
        | { character_set_column_constraint: CharacterSetColumnConstraint }
        | { check_column_constraint: CheckColumnConstraint }
        | { compress_column_constraint: CompressColumnConstraint }
        | { date_format_column_constraint: DateFormatColumnConstraint }
        | { ephemeral_column_constraint: EphemeralColumnConstraint }
        | { with_operator: WithOperator }
        | {
            generated_as_identity_column_constraint: GeneratedAsIdentityColumnConstraint;
        }
        | { auto_increment_column_constraint: AutoIncrementColumnConstraint }
        | { comment_column_constraint: CommentColumnConstraint }
        | { generated_as_row_column_constraint: GeneratedAsRowColumnConstraint }
        | { index_column_constraint: IndexColumnConstraint }
        | { masking_policy_column_constraint: MaskingPolicyColumnConstraint }
        | { not_null_column_constraint: NotNullColumnConstraint }
        | { primary_key_column_constraint: PrimaryKeyColumnConstraint }
        | { unique_column_constraint: UniqueColumnConstraint }
        | { watermark_column_constraint: WatermarkColumnConstraint }
        | { computed_column_constraint: ComputedColumnConstraint }
        | { in_out_column_constraint: InOutColumnConstraint }
        | { default_column_constraint: DefaultColumnConstraint }
        | { path_column_constraint: PathColumnConstraint }
        | { constraint: Constraint }
        | { export: Export }
        | { filter: Filter }
        | { changes: Changes }
        | { copy_parameter: CopyParameter }
        | { credentials: Credentials }
        | { directory: Directory }
        | { foreign_key: ForeignKey }
        | { column_prefix: ColumnPrefix }
        | { primary_key: PrimaryKey }
        | { into_clause: IntoClause }
        | { join_hint: JoinHint }
        | { opclass: Opclass }
        | { index: Index }
        | { index_parameters: IndexParameters }
        | { conditional_insert: ConditionalInsert }
        | { multitable_inserts: MultitableInserts }
        | { on_conflict: OnConflict }
        | { on_condition: OnCondition }
        | { returning: Returning }
        | { introducer: Introducer }
        | { partition_range: PartitionRange }
        | { fetch: Fetch }
        | { group: Group }
        | { cube: Cube }
        | { rollup: Rollup }
        | { grouping_sets: GroupingSets }
        | { limit_options: LimitOptions }
        | { lateral: Lateral }
        | { table_from_rows: TableFromRows }
        | { rows_from: RowsFrom }
        | { match_recognize_measure: MatchRecognizeMeasure }
        | { with_fill: WithFill }
        | { property: Property }
        | { grant_privilege: GrantPrivilege }
        | { grant_principal: GrantPrincipal }
        | { allowed_values_property: AllowedValuesProperty }
        | { algorithm_property: AlgorithmProperty }
        | { auto_increment_property: AutoIncrementProperty }
        | { auto_refresh_property: AutoRefreshProperty }
        | { backup_property: BackupProperty }
        | { build_property: BuildProperty }
        | { block_compression_property: BlockCompressionProperty }
        | { character_set_property: CharacterSetProperty }
        | { checksum_property: ChecksumProperty }
        | { collate_property: CollateProperty }
        | { data_blocksize_property: DataBlocksizeProperty }
        | { data_deletion_property: DataDeletionProperty }
        | { definer_property: DefinerProperty }
        | { dist_key_property: DistKeyProperty }
        | { distributed_by_property: DistributedByProperty }
        | { dist_style_property: DistStyleProperty }
        | { duplicate_key_property: DuplicateKeyProperty }
        | { engine_property: EngineProperty }
        | { to_table_property: ToTableProperty }
        | { execute_as_property: ExecuteAsProperty }
        | { external_property: ExternalProperty }
        | { fallback_property: FallbackProperty }
        | { file_format_property: FileFormatProperty }
        | { credentials_property: CredentialsProperty }
        | { freespace_property: FreespaceProperty }
        | { inherits_property: InheritsProperty }
        | { input_model_property: InputModelProperty }
        | { output_model_property: OutputModelProperty }
        | { isolated_loading_property: IsolatedLoadingProperty }
        | { journal_property: JournalProperty }
        | { language_property: LanguageProperty }
        | { enviroment_property: EnviromentProperty }
        | { clustered_by_property: ClusteredByProperty }
        | { dict_property: DictProperty }
        | { dict_range: DictRange }
        | { on_cluster: OnCluster }
        | { like_property: LikeProperty }
        | { location_property: LocationProperty }
        | { lock_property: LockProperty }
        | { locking_property: LockingProperty }
        | { log_property: LogProperty }
        | { materialized_property: MaterializedProperty }
        | { merge_block_ratio_property: MergeBlockRatioProperty }
        | { on_property: OnProperty }
        | { on_commit_property: OnCommitProperty }
        | { partitioned_by_property: PartitionedByProperty }
        | { partitioned_by_bucket: PartitionedByBucket }
        | { partition_by_truncate: PartitionByTruncate }
        | { partition_by_range_property: PartitionByRangeProperty }
        | { partition_by_range_property_dynamic: PartitionByRangePropertyDynamic }
        | { partition_by_list_property: PartitionByListProperty }
        | { partition_list: PartitionList }
        | { partition: Partition }
        | { refresh_trigger_property: RefreshTriggerProperty }
        | { unique_key_property: UniqueKeyProperty }
        | { rollup_property: RollupProperty }
        | { partition_bound_spec: PartitionBoundSpec }
        | { partitioned_of_property: PartitionedOfProperty }
        | {
            remote_with_connection_model_property: RemoteWithConnectionModelProperty;
        }
        | { returns_property: ReturnsProperty }
        | { row_format_property: RowFormatProperty }
        | { row_format_delimited_property: RowFormatDelimitedProperty }
        | { row_format_serde_property: RowFormatSerdeProperty }
        | { query_transform: QueryTransform }
        | { sample_property: SampleProperty }
        | { security_property: SecurityProperty }
        | { schema_comment_property: SchemaCommentProperty }
        | { semantic_view: SemanticView }
        | { serde_properties: SerdeProperties }
        | { set_property: SetProperty }
        | { sharing_property: SharingProperty }
        | { set_config_property: SetConfigProperty }
        | { settings_property: SettingsProperty }
        | { sort_key_property: SortKeyProperty }
        | { sql_read_write_property: SqlReadWriteProperty }
        | { sql_security_property: SqlSecurityProperty }
        | { stability_property: StabilityProperty }
        | { storage_handler_property: StorageHandlerProperty }
        | { temporary_property: TemporaryProperty }
        | { tags: Tags }
        | { transform_model_property: TransformModelProperty }
        | { transient_property: TransientProperty }
        | { using_template_property: UsingTemplateProperty }
        | { view_attribute_property: ViewAttributeProperty }
        | { volatile_property: VolatileProperty }
        | { with_data_property: WithDataProperty }
        | { with_journal_table_property: WithJournalTableProperty }
        | { with_schema_binding_property: WithSchemaBindingProperty }
        | { with_system_versioning_property: WithSystemVersioningProperty }
        | { with_procedure_options: WithProcedureOptions }
        | { encode_property: EncodeProperty }
        | { include_property: IncludeProperty }
        | { properties: Properties }
        | { input_output_format: InputOutputFormat }
        | { reference: Reference }
        | { query_option: QueryOption }
        | { with_table_hint: WithTableHint }
        | { index_table_hint: IndexTableHint }
        | { historical_data: HistoricalData }
        | { get: Get }
        | { set_operation: SetOperation }
        | { var: Var }
        | { version: Version }
        | { schema: Schema }
        | { lock: Lock }
        | { table_sample: TableSample }
        | { tag: Tag }
        | { unpivot_columns: UnpivotColumns }
        | { window_spec: WindowSpec }
        | { session_parameter: SessionParameter }
        | { pseudo_type: PseudoType }
        | { object_identifier: ObjectIdentifier }
        | { transaction: Transaction }
        | { commit: Commit }
        | { rollback: Rollback }
        | { alter_session: AlterSession }
        | { analyze: Analyze }
        | { analyze_statistics: AnalyzeStatistics }
        | { analyze_histogram: AnalyzeHistogram }
        | { analyze_sample: AnalyzeSample }
        | { analyze_list_chained_rows: AnalyzeListChainedRows }
        | { analyze_delete: AnalyzeDelete }
        | { analyze_with: AnalyzeWith }
        | { analyze_validate: AnalyzeValidate }
        | { add_partition: AddPartition }
        | { attach_option: AttachOption }
        | { drop_partition: DropPartition }
        | { replace_partition: ReplacePartition }
        | { d_pipe: DPipe }
        | { operator: Operator }
        | { pivot_any: PivotAny }
        | { aliases: Aliases }
        | { at_index: AtIndex }
        | { from_time_zone: FromTimeZone }
        | { format_phrase: FormatPhrase }
        | { for_in: ForIn }
        | { time_unit: TimeUnit }
        | { interval_op: IntervalOp }
        | { interval_span: IntervalSpan }
        | { having_max: HavingMax }
        | { cosine_distance: CosineDistance }
        | { dot_product: DotProduct }
        | { euclidean_distance: EuclideanDistance }
        | { manhattan_distance: ManhattanDistance }
        | { jarowinkler_similarity: JarowinklerSimilarity }
        | { booland: Booland }
        | { boolor: Boolor }
        | { parameterized_agg: ParameterizedAgg }
        | { arg_max: ArgMax }
        | { arg_min: ArgMin }
        | { approx_top_k: ApproxTopK }
        | { approx_top_k_accumulate: ApproxTopKAccumulate }
        | { approx_top_k_combine: ApproxTopKCombine }
        | { approx_top_k_estimate: ApproxTopKEstimate }
        | { approx_top_sum: ApproxTopSum }
        | { approx_quantiles: ApproxQuantiles }
        | { minhash: Minhash }
        | { farm_fingerprint: FarmFingerprint }
        | { float64: Float64 }
        | { transform: Transform }
        | { translate: Translate }
        | { grouping: Grouping }
        | { grouping_id: GroupingId }
        | { anonymous: Anonymous }
        | { anonymous_agg_func: AnonymousAggFunc }
        | { combined_agg_func: CombinedAggFunc }
        | { combined_parameterized_agg: CombinedParameterizedAgg }
        | { hash_agg: HashAgg }
        | { hll: Hll }
        | { apply: Apply }
        | { to_boolean: ToBoolean }
        | { list: List }
        | { to_map: ToMap }
        | { pad: Pad }
        | { to_char: ToChar }
        | { to_number: ToNumber }
        | { to_double: ToDouble }
        | { int64: UnaryFunc }
        | { string_func: StringFunc }
        | { to_decfloat: ToDecfloat }
        | { try_to_decfloat: TryToDecfloat }
        | { to_file: ToFile }
        | { columns: Columns }
        | { convert_to_charset: ConvertToCharset }
        | { convert_timezone: ConvertTimezone }
        | { generate_series: GenerateSeries }
        | { a_i_agg: AIAgg }
        | { a_i_classify: AIClassify }
        | { array_all: ArrayAll }
        | { array_any: ArrayAny }
        | { array_construct_compact: ArrayConstructCompact }
        | { st_point: StPoint }
        | { st_distance: StDistance }
        | { string_to_array: StringToArray }
        | { array_sum: ArraySum }
        | { object_agg: ObjectAgg }
        | { cast_to_str_type: CastToStrType }
        | { check_json: CheckJson }
        | { check_xml: CheckXml }
        | { translate_characters: TranslateCharacters }
        | { current_schemas: CurrentSchemas }
        | { current_datetime: CurrentDatetime }
        | { localtime: Localtime }
        | { localtimestamp: Localtimestamp }
        | { systimestamp: Systimestamp }
        | { current_schema: CurrentSchema }
        | { current_user: CurrentUser }
        | { utc_time: UtcTime }
        | { utc_timestamp: UtcTimestamp }
        | { timestamp: TimestampFunc }
        | { date_bin: DateBin }
        | { datetime: Datetime }
        | { datetime_add: DatetimeAdd }
        | { datetime_sub: DatetimeSub }
        | { datetime_diff: DatetimeDiff }
        | { datetime_trunc: DatetimeTrunc }
        | { dayname: Dayname }
        | { make_interval: MakeInterval }
        | { previous_day: PreviousDay }
        | { elt: Elt }
        | { timestamp_add: TimestampAdd }
        | { timestamp_sub: TimestampSub }
        | { timestamp_diff: TimestampDiff }
        | { time_slice: TimeSlice }
        | { time_add: TimeAdd }
        | { time_sub: TimeSub }
        | { time_diff: TimeDiff }
        | { time_trunc: TimeTrunc }
        | { date_from_parts: DateFromParts }
        | { time_from_parts: TimeFromParts }
        | { decode_case: DecodeCase }
        | { decrypt: Decrypt }
        | { decrypt_raw: DecryptRaw }
        | { encode: Encode }
        | { encrypt: Encrypt }
        | { encrypt_raw: EncryptRaw }
        | { equal_null: EqualNull }
        | { to_binary: ToBinary }
        | { base64_decode_binary: Base64DecodeBinary }
        | { base64_decode_string: Base64DecodeString }
        | { base64_encode: Base64Encode }
        | { try_base64_decode_binary: TryBase64DecodeBinary }
        | { try_base64_decode_string: TryBase64DecodeString }
        | { gap_fill: GapFill }
        | { generate_date_array: GenerateDateArray }
        | { generate_timestamp_array: GenerateTimestampArray }
        | { get_extract: GetExtract }
        | { getbit: Getbit }
        | { overflow_truncate_behavior: OverflowTruncateBehavior }
        | { hex_encode: HexEncode }
        | { compress: Compress }
        | { decompress_binary: DecompressBinary }
        | { decompress_string: DecompressString }
        | { xor: Xor }
        | { nullif: Nullif }
        | { j_s_o_n: JSON }
        | { j_s_o_n_path: JSONPath }
        | { j_s_o_n_path_filter: JSONPathFilter }
        | { j_s_o_n_path_key: JSONPathKey }
        | { j_s_o_n_path_recursive: JSONPathRecursive }
        | { j_s_o_n_path_script: JSONPathScript }
        | { j_s_o_n_path_slice: JSONPathSlice }
        | { j_s_o_n_path_selector: JSONPathSelector }
        | { j_s_o_n_path_subscript: JSONPathSubscript }
        | { j_s_o_n_path_union: JSONPathUnion }
        | { format: Format }
        | { j_s_o_n_keys: JSONKeys }
        | { j_s_o_n_key_value: JSONKeyValue }
        | { j_s_o_n_keys_at_depth: JSONKeysAtDepth }
        | { j_s_o_n_object: JSONObject }
        | { j_s_o_n_object_agg: JSONObjectAgg }
        | { j_s_o_n_b_object_agg: JSONBObjectAgg }
        | { j_s_o_n_array: JSONArray }
        | { j_s_o_n_array_agg: JSONArrayAgg }
        | { j_s_o_n_exists: JSONExists }
        | { j_s_o_n_column_def: JSONColumnDef }
        | { j_s_o_n_schema: JSONSchema }
        | { j_s_o_n_set: JSONSet }
        | { j_s_o_n_strip_nulls: JSONStripNulls }
        | { j_s_o_n_value: JSONValue }
        | { j_s_o_n_value_array: JSONValueArray }
        | { j_s_o_n_remove: JSONRemove }
        | { j_s_o_n_table: JSONTable }
        | { j_s_o_n_type: JSONType }
        | { object_insert: ObjectInsert }
        | { open_j_s_o_n_column_def: OpenJSONColumnDef }
        | { open_j_s_o_n: OpenJSON }
        | { j_s_o_n_b_exists: JSONBExists }
        | { j_s_o_n_b_contains: BinaryFunc }
        | { j_s_o_n_b_extract: BinaryFunc }
        | { j_s_o_n_cast: JSONCast }
        | { j_s_o_n_extract: JSONExtract }
        | { j_s_o_n_extract_quote: JSONExtractQuote }
        | { j_s_o_n_extract_array: JSONExtractArray }
        | { j_s_o_n_extract_scalar: JSONExtractScalar }
        | { j_s_o_n_b_extract_scalar: JSONBExtractScalar }
        | { j_s_o_n_format: JSONFormat }
        | { j_s_o_n_bool: UnaryFunc }
        | { j_s_o_n_path_root: JSONPathRoot }
        | { j_s_o_n_array_append: JSONArrayAppend }
        | { j_s_o_n_array_contains: JSONArrayContains }
        | { j_s_o_n_array_insert: JSONArrayInsert }
        | { parse_j_s_o_n: ParseJSON }
        | { parse_url: ParseUrl }
        | { parse_ip: ParseIp }
        | { parse_time: ParseTime }
        | { parse_datetime: ParseDatetime }
        | { map: Map }
        | { map_cat: MapCat }
        | { map_delete: MapDelete }
        | { map_insert: MapInsert }
        | { map_pick: MapPick }
        | { scope_resolution: ScopeResolution }
        | { slice: Slice }
        | { var_map: VarMap }
        | { match_against: MatchAgainst }
        | { m_d5_digest: MD5Digest }
        | { m_d5_number_lower64: UnaryFunc }
        | { m_d5_number_upper64: UnaryFunc }
        | { monthname: Monthname }
        | { ntile: Ntile }
        | { normalize: Normalize }
        | { normal: Normal }
        | { predict: Predict }
        | { m_l_translate: MLTranslate }
        | { features_at_time: FeaturesAtTime }
        | { generate_embedding: GenerateEmbedding }
        | { m_l_forecast: MLForecast }
        | { model_attribute: ModelAttribute }
        | { vector_search: VectorSearch }
        | { quantile: Quantile }
        | { approx_quantile: ApproxQuantile }
        | { approx_percentile_estimate: ApproxPercentileEstimate }
        | { randn: Randn }
        | { randstr: Randstr }
        | { range_n: RangeN }
        | { range_bucket: RangeBucket }
        | { read_c_s_v: ReadCSV }
        | { read_parquet: ReadParquet }
        | { reduce: Reduce }
        | { regexp_extract_all: RegexpExtractAll }
        | { regexp_i_like: RegexpILike }
        | { regexp_full_match: RegexpFullMatch }
        | { regexp_instr: RegexpInstr }
        | { regexp_split: RegexpSplit }
        | { regexp_count: RegexpCount }
        | { regr_valx: RegrValx }
        | { regr_valy: RegrValy }
        | { regr_avgy: RegrAvgy }
        | { regr_avgx: RegrAvgx }
        | { regr_count: RegrCount }
        | { regr_intercept: RegrIntercept }
        | { regr_r2: RegrR2 }
        | { regr_sxx: RegrSxx }
        | { regr_sxy: RegrSxy }
        | { regr_syy: RegrSyy }
        | { regr_slope: RegrSlope }
        | { safe_add: SafeAdd }
        | { safe_divide: SafeDivide }
        | { safe_multiply: SafeMultiply }
        | { safe_subtract: SafeSubtract }
        | { s_h_a2: SHA2 }
        | { s_h_a2_digest: SHA2Digest }
        | { sort_array: SortArray }
        | { split_part: SplitPart }
        | { substring_index: SubstringIndex }
        | { standard_hash: StandardHash }
        | { str_position: StrPosition }
        | { search: Search }
        | { search_ip: SearchIp }
        | { str_to_date: StrToDate }
        | { date_str_to_date: UnaryFunc }
        | { date_to_date_str: UnaryFunc }
        | { str_to_time: StrToTime }
        | { str_to_unix: StrToUnix }
        | { str_to_map: StrToMap }
        | { number_to_str: NumberToStr }
        | { from_base: FromBase }
        | { stuff: Stuff }
        | { time_to_str: TimeToStr }
        | { time_str_to_time: TimeStrToTime }
        | { ts_or_ds_add: TsOrDsAdd }
        | { ts_or_ds_diff: TsOrDsDiff }
        | { ts_or_ds_to_date: TsOrDsToDate }
        | { ts_or_ds_to_time: TsOrDsToTime }
        | { unhex: Unhex }
        | { uniform: Uniform }
        | { unix_to_str: UnixToStr }
        | { unix_to_time: UnixToTime }
        | { uuid: Uuid }
        | { timestamp_from_parts: TimestampFromParts }
        | { timestamp_tz_from_parts: TimestampTzFromParts }
        | { corr: Corr }
        | { width_bucket: WidthBucket }
        | { covar_samp: CovarSamp }
        | { covar_pop: CovarPop }
        | { week: Week }
        | { x_m_l_element: XMLElement }
        | { x_m_l_get: XMLGet }
        | { x_m_l_table: XMLTable }
        | { x_m_l_key_value_option: XMLKeyValueOption }
        | { zipf: Zipf }
        | { merge: Merge }
        | { when: When }
        | { whens: Whens }
        | { next_value_for: NextValueFor }
        | { return_stmt: Expression }

    Represent any SQL expression or statement as a single, recursive AST node.

    Expression is the root type of the polyglot AST. Every parsed SQL construct -- from a simple integer literal to a multi-CTE query with window functions -- is represented as a variant of this enum.

    Variants are organized into logical groups (see the module-level docs). Most non-trivial variants box their payload so that size_of::<Expression>() stays small (currently two words: tag + pointer).

    Constructing Expressions

    Use the convenience constructors on impl Expression for common cases:

    use polyglot_sql::expressions::Expression;
    
    let col  = Expression::column("id");
    let lit  = Expression::number(42);
    let star = Expression::star();
    

    Generating SQL

    let expr = Expression::column("name");
    assert_eq!(expr.sql(), "name");