Here are supported SQL statements and their supported features. If at the end of statement there is ..., it means that the part is taken as a string and not parsed for details, so it is used for diffing as string.
ALTER SEQUENCE name
OWNED BY { table_name.column_name | NONE }
ALTER TABLE [ ONLY ] table_name
ALTER [ COLUMN ] SET DEFAULT expression
ALTER [ COLUMN ] SET STATISTICS integer
ALTER [ COLUMN ] SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ADD FOREIGN KEY ( column [, ... ] ) ...
ADD CONSTRAINT constraint_name
DISABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE REPLICA TRIGGER trigger_name
ENABLE ALWAYS TRIGGER trigger_name
DISABLE RULE rewrite_rule_name
ENABLE RULE rewrite_rule_name
ENABLE REPLICA RULE rewrite_rule_name
ENABLE ALWAYS RULE rewrite_rule_name
CLUSTER ON index_name
OWNER TO new_owner
ALTER TABLE view_name
ALTER [ COLUMN ] SET DEFAULT expression
ALTER [ COLUMN ] DROP DEFAULT
OWNER TO new_owner
ALTER TABLE sequence_name
OWNER TO new_owner
ENABLE|DISABLE TRIGGER|RULE and OWNER TO are parsed but not diffed.
ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT ALTER VIEW name OWNER TO new_owner
OWNER TO is parsed but not diffed.
COMMENT ON
{
TABLE object_name |
COLUMN table_name.column_name |
CONSTRAINT constraint_name ON table_name |
DATABASE object_name |
FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |
INDEX object_name |
SCHEMA object_name |
SEQUENCE object_name |
TRIGGER trigger_name ON table_name |
VIEW object_name
} IS 'text'
CREATE [ OR REPLACE ] FUNCTION
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) ...
CREATE [ UNIQUE ] INDEX name ON table ...
Note that here name is required whereas PostgreSQL does not require it.
CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] ... CREATE SCHEMA AUTHORIZATION user_name ...
CREATE SEQUENCE name [ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table.column | NONE } ]
CREATE TABLE [ IF NOT EXISTS ] name ( [
{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]
| CONSTRAINT constraint_name ...
] )
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH ( ... ) | WITH OIDS | WITHOUT OIDS ]
[ TABLESPACE tablespace ]
From column_constraint, only NULL and NOT NULL are supported.
CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
[ WHEN ( condition ) ]
EXECUTE PROCEDURE function_name ( arguments )
where event can be one of:
INSERT
UPDATE [ OF column_name [, ... ] ]
DELETE
TRUNCATE
CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS ...
SET search_path = schema [, ...]
Only supported for search_path.
Other SQL statements are ignored by apgdiff. If you want apgdiff to
support them, file a bug at GitHub Issues Tracker.
Also, you can use --output-ignored-statements command line
switch to see what statements apgdiff ignores when creating the diff.