Skip to main content

Module sql

Module sql 

Source
Expand description

SQL rendering helpers for the rewrite pass.

These functions produce canonical Postgres DDL strings from IR objects. They are used both by the non-rewriting dispatcher in super and by the online-rewrite submodules.

Output is canonical (deterministic spacing, lowercase keywords, schema-qualified names) so that two equal IR inputs produce byte-identical SQL — required by the plan-id hash in spec §6.6.

Functions§

alter_column_set_compression
ALTER TABLE qname ALTER COLUMN name SET COMPRESSION {pglz|lz4|DEFAULT};
alter_column_set_default
ALTER TABLE qname ALTER COLUMN name {SET DEFAULT expr|DROP DEFAULT};
alter_column_set_generated
ALTER TABLE qname ALTER COLUMN name DROP EXPRESSION;
alter_column_set_identity
ALTER TABLE qname ALTER COLUMN name { ADD GENERATED ... AS IDENTITY | DROP IDENTITY };
alter_column_set_nullable
ALTER TABLE qname ALTER COLUMN name {SET|DROP} NOT NULL;
alter_column_set_storage
ALTER TABLE qname ALTER COLUMN name SET STORAGE {PLAIN|EXTERNAL|EXTENDED|MAIN};
alter_column_type
ALTER TABLE qname ALTER COLUMN name TYPE T [USING expr];
alter_sequence_cache
ALTER SEQUENCE qname CACHE n;
alter_sequence_cycle
ALTER SEQUENCE qname { CYCLE | NO CYCLE };
alter_sequence_data_type
ALTER SEQUENCE qname AS T;
alter_sequence_increment
ALTER SEQUENCE qname INCREMENT BY n;
alter_sequence_max_value
ALTER SEQUENCE qname { MAXVALUE n | NO MAXVALUE };
alter_sequence_min_value
ALTER SEQUENCE qname { MINVALUE n | NO MINVALUE };
alter_sequence_owned_by
ALTER SEQUENCE qname OWNED BY { table.col | NONE };
alter_table_add_column
ALTER TABLE qname ADD COLUMN ...;
alter_table_add_constraint
ALTER TABLE qname ADD CONSTRAINT ...; (validated form).
alter_table_add_constraint_not_valid
ALTER TABLE qname ADD CONSTRAINT ... NOT VALID;
alter_table_drop_column
ALTER TABLE qname DROP COLUMN name;
alter_table_drop_constraint
ALTER TABLE qname DROP CONSTRAINT name;
alter_table_validate_constraint
ALTER TABLE qname VALIDATE CONSTRAINT name;
column_def
One column in CREATE TABLE or ALTER TABLE ADD COLUMN.
comment_on_column
COMMENT ON COLUMN qname.col IS '...';
comment_on_constraint
COMMENT ON CONSTRAINT name ON qname IS '...';
comment_on_index
COMMENT ON INDEX qname IS '...';
comment_on_schema
COMMENT ON SCHEMA name IS '...'; (or IS NULL to clear).
comment_on_sequence
COMMENT ON SEQUENCE qname IS '...';
comment_on_table
COMMENT ON TABLE qname IS '...';
constraint_def_with_name
CONSTRAINT name <body> — used for both inline and ADD CONSTRAINT forms.
create_index
CREATE [UNIQUE] INDEX [CONCURRENTLY] name ON table USING method (...) [INCLUDE (...)] [WHERE ...];
create_schema
CREATE SCHEMA name;
create_sequence
CREATE SEQUENCE schema.name AS T [INCREMENT BY n] ....
create_table
CREATE TABLE schema.name ( ... ); with inline columns and constraints.
drop_index
DROP INDEX [CONCURRENTLY] name;
drop_schema
DROP SCHEMA name;
drop_sequence
DROP SEQUENCE schema.name;
drop_table
DROP TABLE schema.name;