@@ -874,6 +874,11 @@ static const SchemaQuery Query_for_list_of_matviews = {
874
874
" AND d.datname = pg_catalog.current_database() "\
875
875
" AND s.subdbid = d.oid"
876
876
877
+ #define Query_for_list_of_compression_methods \
878
+ " SELECT pg_catalog.quote_ident(cmname) "\
879
+ " FROM pg_catalog.pg_compression "\
880
+ " WHERE substring(pg_catalog.quote_ident(cmname),1,%d)='%s'"
881
+
877
882
/* the silly-looking length condition is just to eat up the current word */
878
883
#define Query_for_list_of_arguments \
879
884
"SELECT pg_catalog.oidvectortypes(proargtypes)||')' "\
@@ -996,6 +1001,7 @@ static const pgsql_thing_t words_after_create[] = {
996
1001
* CREATE CONSTRAINT TRIGGER is not supported here because it is designed
997
1002
* to be used only by pg_dump.
998
1003
*/
1004
+ {"COMPRESSION METHOD" , NULL , NULL },
999
1005
{"CONFIGURATION" , Query_for_list_of_ts_configurations , NULL , THING_NO_SHOW },
1000
1006
{"CONVERSION" , "SELECT pg_catalog.quote_ident(conname) FROM pg_catalog.pg_conversion WHERE substring(pg_catalog.quote_ident(conname),1,%d)='%s'" },
1001
1007
{"DATABASE" , Query_for_list_of_databases },
@@ -1404,8 +1410,8 @@ psql_completion(const char *text, int start, int end)
1404
1410
static const char * const backslash_commands [] = {
1405
1411
"\\a" , "\\connect" , "\\conninfo" , "\\C" , "\\cd" , "\\copy" ,
1406
1412
"\\copyright" , "\\crosstabview" ,
1407
- "\\d" , "\\da" , "\\dA" , "\\db" , "\\dc" , "\\dC" , "\\dd " , "\\ddp " , "\\dD " ,
1408
- "\\des" , "\\det" , "\\deu" , "\\dew" , "\\dE" , "\\df" ,
1413
+ "\\d" , "\\da" , "\\dA" , "\\db" , "\\dc" , "\\dC" , "\\dCM " , "\\dd " , "\\ddp " ,
1414
+ "\\dD" , "\\ des" , "\\det" , "\\deu" , "\\dew" , "\\dE" , "\\df" ,
1409
1415
"\\dF" , "\\dFd" , "\\dFp" , "\\dFt" , "\\dg" , "\\di" , "\\dl" , "\\dL" ,
1410
1416
"\\dm" , "\\dn" , "\\do" , "\\dO" , "\\dp" , "\\drds" , "\\ds" , "\\dS" ,
1411
1417
"\\dt" , "\\dT" , "\\dv" , "\\du" , "\\dx" , "\\dy" ,
@@ -1906,11 +1912,17 @@ psql_completion(const char *text, int start, int end)
1906
1912
/* ALTER TABLE ALTER [COLUMN] <foo> SET */
1907
1913
else if (Matches7 ("ALTER" , "TABLE" , MatchAny , "ALTER" , "COLUMN" , MatchAny , "SET" ) ||
1908
1914
Matches6 ("ALTER" , "TABLE" , MatchAny , "ALTER" , MatchAny , "SET" ))
1909
- COMPLETE_WITH_LIST5 ("(" , "DEFAULT" , "NOT NULL" , "STATISTICS" , "STORAGE" );
1915
+ COMPLETE_WITH_LIST6 ("(" , "COMPRESSED " , "DEFAULT" , "NOT NULL" , "STATISTICS" , "STORAGE" );
1910
1916
/* ALTER TABLE ALTER [COLUMN] <foo> SET ( */
1911
1917
else if (Matches8 ("ALTER" , "TABLE" , MatchAny , "ALTER" , "COLUMN" , MatchAny , "SET" , "(" ) ||
1912
1918
Matches7 ("ALTER" , "TABLE" , MatchAny , "ALTER" , MatchAny , "SET" , "(" ))
1913
1919
COMPLETE_WITH_LIST2 ("n_distinct" , "n_distinct_inherited" );
1920
+ else if (Matches8 ("ALTER" , "TABLE" , MatchAny , "ALTER" , "COLUMN" , MatchAny , "SET" , "COMPRESSED" ) ||
1921
+ Matches7 ("ALTER" , "TABLE" , MatchAny , "ALTER" , MatchAny , "SET" , "COMPRESSED" ))
1922
+ COMPLETE_WITH_QUERY (Query_for_list_of_compression_methods );
1923
+ else if (Matches9 ("ALTER" , "TABLE" , MatchAny , "ALTER" , "COLUMN" , MatchAny , "SET" , "COMPRESSED" , MatchAny ) ||
1924
+ Matches8 ("ALTER" , "TABLE" , MatchAny , "ALTER" , MatchAny , "SET" , "COMPRESSED" , MatchAny ))
1925
+ COMPLETE_WITH_CONST ("WITH (" );
1914
1926
/* ALTER TABLE ALTER [COLUMN] <foo> SET STORAGE */
1915
1927
else if (Matches8 ("ALTER" , "TABLE" , MatchAny , "ALTER" , "COLUMN" , MatchAny , "SET" , "STORAGE" ) ||
1916
1928
Matches7 ("ALTER" , "TABLE" , MatchAny , "ALTER" , MatchAny , "SET" , "STORAGE" ))
@@ -2125,12 +2137,14 @@ psql_completion(const char *text, int start, int end)
2125
2137
"SERVER" , "INDEX" , "LANGUAGE" , "POLICY" , "PUBLICATION" , "RULE" , "SCHEMA" , "SEQUENCE" , "SUBSCRIPTION" ,
2126
2138
"TABLE" , "TYPE" , "VIEW" , "MATERIALIZED VIEW" , "COLUMN" , "AGGREGATE" , "FUNCTION" ,
2127
2139
"OPERATOR" , "TRIGGER" , "CONSTRAINT" , "DOMAIN" , "LARGE OBJECT" ,
2128
- "TABLESPACE" , "TEXT SEARCH" , "ROLE" , NULL };
2140
+ "TABLESPACE" , "TEXT SEARCH" , "ROLE" , "COMPRESSION METHOD" , NULL };
2129
2141
2130
2142
COMPLETE_WITH_LIST (list_COMMENT );
2131
2143
}
2132
2144
else if (Matches4 ("COMMENT" , "ON" , "ACCESS" , "METHOD" ))
2133
2145
COMPLETE_WITH_QUERY (Query_for_list_of_access_methods );
2146
+ else if (Matches4 ("COMMENT" , "ON" , "COMPRESSION" , "METHOD" ))
2147
+ COMPLETE_WITH_QUERY (Query_for_list_of_compression_methods );
2134
2148
else if (Matches3 ("COMMENT" , "ON" , "FOREIGN" ))
2135
2149
COMPLETE_WITH_LIST2 ("DATA WRAPPER" , "TABLE" );
2136
2150
else if (Matches4 ("COMMENT" , "ON" , "TEXT" , "SEARCH" ))
@@ -2203,6 +2217,17 @@ psql_completion(const char *text, int start, int end)
2203
2217
else if (Matches6 ("CREATE" , "ACCESS" , "METHOD" , MatchAny , "TYPE" , MatchAny ))
2204
2218
COMPLETE_WITH_CONST ("HANDLER" );
2205
2219
2220
+ /* CREATE COMPRESSION METHOD */
2221
+ /* Complete "CREATE COMPRESSION METHOD <name>" */
2222
+ else if (Matches4 ("CREATE" , "COMPRESSION" , "METHOD" , MatchAny ))
2223
+ COMPLETE_WITH_CONST ("FOR" );
2224
+ /* Complete "CREATE COMPRESSION METHOD <name> FOR" */
2225
+ else if (Matches5 ("CREATE" , "COMPRESSION" , "METHOD" , MatchAny , "FOR" ))
2226
+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_datatypes , NULL );
2227
+ /* Complete "CREATE COMPRESSION METHOD <name> FOR <type>" */
2228
+ else if (Matches6 ("CREATE" , "COMPRESSION" , "METHOD" , MatchAny , "FOR" , MatchAny ))
2229
+ COMPLETE_WITH_CONST ("HANDLER" );
2230
+
2206
2231
/* CREATE DATABASE */
2207
2232
else if (Matches3 ("CREATE" , "DATABASE" , MatchAny ))
2208
2233
COMPLETE_WITH_LIST9 ("OWNER" , "TEMPLATE" , "ENCODING" , "TABLESPACE" ,
@@ -2603,6 +2628,7 @@ psql_completion(const char *text, int start, int end)
2603
2628
Matches4 ("DROP" , "ACCESS" , "METHOD" , MatchAny ) ||
2604
2629
(Matches4 ("DROP" , "AGGREGATE|FUNCTION" , MatchAny , MatchAny ) &&
2605
2630
ends_with (prev_wd , ')' )) ||
2631
+ Matches4 ("DROP" , "COMPRESSION" , "METHOD" , MatchAny ) ||
2606
2632
Matches4 ("DROP" , "EVENT" , "TRIGGER" , MatchAny ) ||
2607
2633
Matches5 ("DROP" , "FOREIGN" , "DATA" , "WRAPPER" , MatchAny ) ||
2608
2634
Matches4 ("DROP" , "FOREIGN" , "TABLE" , MatchAny ) ||
@@ -2695,6 +2721,12 @@ psql_completion(const char *text, int start, int end)
2695
2721
else if (Matches3 ("DROP" , "SUBSCRIPTION" , MatchAny ))
2696
2722
COMPLETE_WITH_LIST2 ("DROP SLOT" , "NODROP SLOT" );
2697
2723
2724
+ /* DROP COMPRESSION METHOD */
2725
+ else if (Matches2 ("DROP" , "COMPRESSION" ))
2726
+ COMPLETE_WITH_CONST ("METHOD" );
2727
+ else if (Matches3 ("DROP" , "COMPRESSION" , "METHOD" ))
2728
+ COMPLETE_WITH_QUERY (Query_for_list_of_compression_methods );
2729
+
2698
2730
/* EXECUTE */
2699
2731
else if (Matches1 ("EXECUTE" ))
2700
2732
COMPLETE_WITH_QUERY (Query_for_list_of_prepared_statements );
@@ -3325,6 +3357,8 @@ psql_completion(const char *text, int start, int end)
3325
3357
COMPLETE_WITH_QUERY (Query_for_list_of_access_methods );
3326
3358
else if (TailMatchesCS1 ("\\db*" ))
3327
3359
COMPLETE_WITH_QUERY (Query_for_list_of_tablespaces );
3360
+ else if (TailMatchesCS1 ("\\dCM*" ))
3361
+ COMPLETE_WITH_QUERY (Query_for_list_of_compression_methods );
3328
3362
else if (TailMatchesCS1 ("\\dD*" ))
3329
3363
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_domains , NULL );
3330
3364
else if (TailMatchesCS1 ("\\des*" ))
0 commit comments