53#include "catalog/pg_am_d.h"
54#include "catalog/pg_class_d.h"
68#ifndef HAVE_RL_FILENAME_COMPLETION_FUNCTION
69#define rl_filename_completion_function filename_completion_function
72#ifndef HAVE_RL_COMPLETION_MATCHES
73#define rl_completion_matches completion_matches
81#ifdef HAVE_RL_FILENAME_QUOTING_FUNCTION
82#define USE_FILENAME_QUOTING_FUNCTIONS 1
86#define WORD_BREAKS "\t\n@><=;|&() "
167 const char *
namespace;
257#define COMPLETE_WITH_QUERY(query) \
258 COMPLETE_WITH_QUERY_LIST(query, NULL)
260#define COMPLETE_WITH_QUERY_LIST(query, list) \
262 completion_charp = query; \
263 completion_charpp = list; \
264 completion_verbatim = false; \
265 matches = rl_completion_matches(text, complete_from_query); \
268#define COMPLETE_WITH_QUERY_PLUS(query, ...) \
270 static const char *const list[] = { __VA_ARGS__, NULL }; \
271 COMPLETE_WITH_QUERY_LIST(query, list); \
274#define COMPLETE_WITH_QUERY_VERBATIM(query) \
275 COMPLETE_WITH_QUERY_VERBATIM_LIST(query, NULL)
277#define COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list) \
279 completion_charp = query; \
280 completion_charpp = list; \
281 completion_verbatim = true; \
282 matches = rl_completion_matches(text, complete_from_query); \
285#define COMPLETE_WITH_QUERY_VERBATIM_PLUS(query, ...) \
287 static const char *const list[] = { __VA_ARGS__, NULL }; \
288 COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list); \
291#define COMPLETE_WITH_VERSIONED_QUERY(query) \
292 COMPLETE_WITH_VERSIONED_QUERY_LIST(query, NULL)
294#define COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list) \
296 completion_vquery = query; \
297 completion_charpp = list; \
298 completion_verbatim = false; \
299 matches = rl_completion_matches(text, complete_from_versioned_query); \
302#define COMPLETE_WITH_VERSIONED_QUERY_PLUS(query, ...) \
304 static const char *const list[] = { __VA_ARGS__, NULL }; \
305 COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list); \
308#define COMPLETE_WITH_SCHEMA_QUERY(query) \
309 COMPLETE_WITH_SCHEMA_QUERY_LIST(query, NULL)
311#define COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list) \
313 completion_squery = &(query); \
314 completion_charpp = list; \
315 completion_verbatim = false; \
316 matches = rl_completion_matches(text, complete_from_schema_query); \
319#define COMPLETE_WITH_SCHEMA_QUERY_PLUS(query, ...) \
321 static const char *const list[] = { __VA_ARGS__, NULL }; \
322 COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list); \
325#define COMPLETE_WITH_SCHEMA_QUERY_VERBATIM(query) \
327 completion_squery = &(query); \
328 completion_charpp = NULL; \
329 completion_verbatim = true; \
330 matches = rl_completion_matches(text, complete_from_schema_query); \
333#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(query) \
334 COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, NULL)
336#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list) \
338 completion_squery = query; \
339 completion_charpp = list; \
340 completion_verbatim = false; \
341 matches = rl_completion_matches(text, complete_from_versioned_schema_query); \
344#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_PLUS(query, ...) \
346 static const char *const list[] = { __VA_ARGS__, NULL }; \
347 COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list); \
354#define COMPLETE_WITH_CONST(cs, con) \
356 completion_case_sensitive = (cs); \
357 completion_charp = (con); \
358 matches = rl_completion_matches(text, complete_from_const); \
361#define COMPLETE_WITH_LIST_INT(cs, list) \
363 completion_case_sensitive = (cs); \
364 completion_charpp = (list); \
365 matches = rl_completion_matches(text, complete_from_list); \
368#define COMPLETE_WITH_LIST(list) COMPLETE_WITH_LIST_INT(false, list)
369#define COMPLETE_WITH_LIST_CS(list) COMPLETE_WITH_LIST_INT(true, list)
371#define COMPLETE_WITH(...) \
373 static const char *const list[] = { __VA_ARGS__, NULL }; \
374 COMPLETE_WITH_LIST(list); \
377#define COMPLETE_WITH_CS(...) \
379 static const char *const list[] = { __VA_ARGS__, NULL }; \
380 COMPLETE_WITH_LIST_CS(list); \
383#define COMPLETE_WITH_ATTR(relation) \
384 COMPLETE_WITH_ATTR_LIST(relation, NULL)
386#define COMPLETE_WITH_ATTR_LIST(relation, list) \
388 set_completion_reference(relation); \
389 completion_squery = &(Query_for_list_of_attributes); \
390 completion_charpp = list; \
391 completion_verbatim = false; \
392 matches = rl_completion_matches(text, complete_from_schema_query); \
395#define COMPLETE_WITH_ATTR_PLUS(relation, ...) \
397 static const char *const list[] = { __VA_ARGS__, NULL }; \
398 COMPLETE_WITH_ATTR_LIST(relation, list); \
407#define COMPLETE_WITH_ENUM_VALUE(type) \
409 set_completion_reference(type); \
410 if (text[0] == '\'' || \
411 start == 0 || rl_line_buffer[start - 1] != '\'') \
412 completion_squery = &(Query_for_list_of_enum_values_quoted); \
414 completion_squery = &(Query_for_list_of_enum_values_unquoted); \
415 completion_charpp = NULL; \
416 completion_verbatim = true; \
417 matches = rl_completion_matches(text, complete_from_schema_query); \
424#define COMPLETE_WITH_TIMEZONE_NAME() \
426 static const char *const list[] = { "DEFAULT", NULL }; \
427 if (text[0] == '\'') \
428 completion_charp = Query_for_list_of_timezone_names_quoted_in; \
429 else if (start == 0 || rl_line_buffer[start - 1] != '\'') \
430 completion_charp = Query_for_list_of_timezone_names_quoted_out; \
432 completion_charp = Query_for_list_of_timezone_names_unquoted; \
433 completion_charpp = list; \
434 completion_verbatim = true; \
435 matches = rl_completion_matches(text, complete_from_query); \
438#define COMPLETE_WITH_FUNCTION_ARG(function) \
440 set_completion_reference(function); \
441 completion_squery = &(Query_for_list_of_arguments); \
442 completion_charpp = NULL; \
443 completion_verbatim = true; \
444 matches = rl_completion_matches(text, complete_from_schema_query); \
447#define COMPLETE_WITH_FILES_LIST(escape, force_quote, list) \
449 completion_charp = escape; \
450 completion_charpp = list; \
451 completion_force_quote = force_quote; \
452 matches = rl_completion_matches(text, complete_from_files); \
455#define COMPLETE_WITH_FILES(escape, force_quote) \
456 COMPLETE_WITH_FILES_LIST(escape, force_quote, NULL)
458#define COMPLETE_WITH_FILES_PLUS(escape, force_quote, ...) \
460 static const char *const list[] = { __VA_ARGS__, NULL }; \
461 COMPLETE_WITH_FILES_LIST(escape, force_quote, list); \
464#define COMPLETE_WITH_GENERATOR(generator) \
465 matches = rl_completion_matches(text, generator)
475 .catname =
"pg_catalog.pg_constraint con, pg_catalog.pg_class c1",
476 .selcondition =
"con.conrelid=c1.oid",
477 .result =
"con.conname",
478 .refname =
"c1.relname",
479 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
480 .refnamespace =
"c1.relnamespace",
484 .catname =
"pg_catalog.pg_constraint con, pg_catalog.pg_class c1",
485 .selcondition =
"con.conrelid=c1.oid and not con.convalidated",
486 .result =
"con.conname",
487 .refname =
"c1.relname",
488 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
489 .refnamespace =
"c1.relnamespace",
493 .catname =
"pg_catalog.pg_constraint con, pg_catalog.pg_type t",
494 .selcondition =
"con.contypid=t.oid",
495 .result =
"con.conname",
496 .refname =
"t.typname",
497 .refviscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
498 .refnamespace =
"t.typnamespace",
502 .catname =
"pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i",
503 .selcondition =
"c1.oid=i.indrelid and i.indexrelid=c2.oid",
504 .result =
"c2.relname",
505 .refname =
"c1.relname",
506 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
507 .refnamespace =
"c1.relnamespace",
511 .catname =
"pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i",
512 .selcondition =
"c1.oid=i.indrelid and i.indexrelid=c2.oid and i.indisunique",
513 .result =
"c2.relname",
514 .refname =
"c1.relname",
515 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
516 .refnamespace =
"c1.relnamespace",
521 .min_server_version = 110000,
522 .catname =
"pg_catalog.pg_proc p",
523 .selcondition =
"p.prokind = 'a'",
524 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
525 .namespace =
"p.pronamespace",
526 .result =
"p.proname",
529 .catname =
"pg_catalog.pg_proc p",
530 .selcondition =
"p.proisagg",
531 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
532 .namespace =
"p.pronamespace",
533 .result =
"p.proname",
538 .catname =
"pg_catalog.pg_proc p",
539 .result =
"pg_catalog.oidvectortypes(p.proargtypes)||')'",
540 .refname =
"p.proname",
541 .refviscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
542 .refnamespace =
"p.pronamespace",
546 .catname =
"pg_catalog.pg_attribute a, pg_catalog.pg_class c",
547 .selcondition =
"c.oid = a.attrelid and a.attnum > 0 and not a.attisdropped",
548 .result =
"a.attname",
549 .refname =
"c.relname",
550 .refviscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
551 .refnamespace =
"c.relnamespace",
555 .catname =
"pg_catalog.pg_attribute a, pg_catalog.pg_class c",
556 .selcondition =
"c.oid = a.attrelid and a.attnum > 0 and not a.attisdropped",
557 .result =
"a.attnum::pg_catalog.text",
558 .refname =
"c.relname",
559 .refviscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
560 .refnamespace =
"c.relnamespace",
583 "time with time zone",
584 "time without time zone",
585 "timestamp with time zone",
586 "timestamp without time zone",
592 .catname =
"pg_catalog.pg_type t",
594 .selcondition =
"(t.typrelid = 0 "
596 " FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) "
597 "AND t.typname !~ '^_'",
598 .viscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
599 .namespace =
"t.typnamespace",
600 .result =
"t.typname",
605 .catname =
"pg_catalog.pg_type t",
608 " FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) "
609 "AND t.typname !~ '^_'",
610 .viscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
611 .namespace =
"t.typnamespace",
612 .result =
"t.typname",
616 .catname =
"pg_catalog.pg_type t",
617 .selcondition =
"t.typtype = 'd'",
618 .viscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
619 .namespace =
"t.typnamespace",
620 .result =
"t.typname",
624 .catname =
"pg_catalog.pg_enum e, pg_catalog.pg_type t",
625 .selcondition =
"t.oid = e.enumtypid",
626 .result =
"pg_catalog.quote_literal(enumlabel)",
627 .refname =
"t.typname",
628 .refviscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
629 .refnamespace =
"t.typnamespace",
633 .catname =
"pg_catalog.pg_enum e, pg_catalog.pg_type t",
634 .selcondition =
"t.oid = e.enumtypid",
635 .result =
"e.enumlabel",
636 .refname =
"t.typname",
637 .refviscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
638 .refnamespace =
"t.typnamespace",
644 .min_server_version = 110000,
645 .catname =
"pg_catalog.pg_proc p",
646 .selcondition =
"p.prokind != 'p'",
647 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
648 .namespace =
"p.pronamespace",
649 .result =
"p.proname",
652 .catname =
"pg_catalog.pg_proc p",
653 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
654 .namespace =
"p.pronamespace",
655 .result =
"p.proname",
661 .min_server_version = 110000,
662 .catname =
"pg_catalog.pg_proc p",
663 .selcondition =
"p.prokind = 'p'",
664 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
665 .namespace =
"p.pronamespace",
666 .result =
"p.proname",
675 .catname =
"pg_catalog.pg_proc p",
676 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
677 .namespace =
"p.pronamespace",
678 .result =
"p.proname",
682 .catname =
"pg_catalog.pg_class c",
684 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
685 .namespace =
"c.relnamespace",
686 .result =
"c.relname",
690 .catname =
"pg_catalog.pg_class c",
692 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
693 .namespace =
"c.relnamespace",
694 .result =
"c.relname",
698 .catname =
"pg_catalog.pg_class c",
702 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
703 .namespace =
"c.relnamespace",
704 .result =
"c.relname",
708 .catname =
"pg_catalog.pg_class c",
710 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
711 .namespace =
"c.relnamespace",
712 .result =
"c.relname",
716 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_constraint con",
717 .selcondition =
"c.oid=con.conrelid and c.relkind IN ("
720 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
721 .namespace =
"c.relnamespace",
722 .result =
"c.relname",
723 .use_distinct =
true,
724 .refname =
"con.conname",
728 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_policy p",
729 .selcondition =
"c.oid=p.polrelid",
730 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
731 .namespace =
"c.relnamespace",
732 .result =
"c.relname",
733 .use_distinct =
true,
734 .refname =
"p.polname",
738 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_rewrite r",
739 .selcondition =
"c.oid=r.ev_class",
740 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
741 .namespace =
"c.relnamespace",
742 .result =
"c.relname",
743 .use_distinct =
true,
744 .refname =
"r.rulename",
748 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_trigger t",
749 .selcondition =
"c.oid=t.tgrelid",
750 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
751 .namespace =
"c.relnamespace",
752 .result =
"c.relname",
753 .use_distinct =
true,
754 .refname =
"t.tgname",
758 .catname =
"pg_catalog.pg_ts_config c",
759 .viscondition =
"pg_catalog.pg_ts_config_is_visible(c.oid)",
760 .namespace =
"c.cfgnamespace",
761 .result =
"c.cfgname",
765 .catname =
"pg_catalog.pg_ts_dict d",
766 .viscondition =
"pg_catalog.pg_ts_dict_is_visible(d.oid)",
767 .namespace =
"d.dictnamespace",
768 .result =
"d.dictname",
772 .catname =
"pg_catalog.pg_ts_parser p",
773 .viscondition =
"pg_catalog.pg_ts_parser_is_visible(p.oid)",
774 .namespace =
"p.prsnamespace",
775 .result =
"p.prsname",
779 .catname =
"pg_catalog.pg_ts_template t",
780 .viscondition =
"pg_catalog.pg_ts_template_is_visible(t.oid)",
781 .namespace =
"t.tmplnamespace",
782 .result =
"t.tmplname",
786 .catname =
"pg_catalog.pg_class c",
788 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
789 .namespace =
"c.relnamespace",
790 .result =
"c.relname",
794 .catname =
"pg_catalog.pg_class c",
796 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
797 .namespace =
"c.relnamespace",
798 .result =
"c.relname",
802 .catname =
"pg_catalog.pg_class c",
806 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
807 .namespace =
"c.relnamespace",
808 .result =
"c.relname",
812 .catname =
"pg_catalog.pg_class c",
814 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
815 .namespace =
"c.relnamespace",
816 .result =
"c.relname",
820 .catname =
"pg_catalog.pg_class c",
822 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
823 .namespace =
"c.relnamespace",
824 .result =
"pg_catalog.quote_ident(c.relname)",
830 .catname =
"pg_catalog.pg_class c",
831 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
832 .namespace =
"c.relnamespace",
833 .result =
"c.relname",
838 .catname =
"pg_catalog.pg_class c",
841 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
842 .namespace =
"c.relnamespace",
843 .result =
"c.relname",
847 .catname =
"pg_catalog.pg_opfamily c",
848 .viscondition =
"pg_catalog.pg_opfamily_is_visible(c.oid)",
849 .namespace =
"c.opfnamespace",
850 .result =
"c.opfname",
855 .catname =
"pg_catalog.pg_class c",
861 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
862 .namespace =
"c.relnamespace",
863 .result =
"c.relname",
868 .catname =
"pg_catalog.pg_class c",
873 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
874 .namespace =
"c.relnamespace",
875 .result =
"c.relname",
880 .catname =
"pg_catalog.pg_class c",
888 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
889 .namespace =
"c.relnamespace",
890 .result =
"c.relname",
895 .catname =
"pg_catalog.pg_class c",
900 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
901 .namespace =
"c.relnamespace",
902 .result =
"c.relname",
906#define Query_for_list_of_grantables Query_for_list_of_selectables
910 .catname =
"pg_catalog.pg_class c",
916 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
917 .namespace =
"c.relnamespace",
918 .result =
"c.relname",
927#define Query_for_list_of_tables_for_copy Query_for_list_of_analyzables
931 .catname =
"pg_catalog.pg_class c",
936 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
937 .namespace =
"c.relnamespace",
938 .result =
"c.relname",
945#define Query_for_list_of_vacuumables Query_for_list_of_indexables
949 .catname =
"pg_catalog.pg_class c",
954 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
955 .namespace =
"c.relnamespace",
956 .result =
"c.relname",
960 .catname =
"pg_catalog.pg_constraint c",
961 .selcondition =
"c.conrelid <> 0",
962 .namespace =
"c.connamespace",
963 .result =
"c.conname",
967 .catname =
"pg_catalog.pg_statistic_ext s",
968 .viscondition =
"pg_catalog.pg_statistics_obj_is_visible(s.oid)",
969 .namespace =
"s.stxnamespace",
970 .result =
"s.stxname",
974 .catname =
"pg_catalog.pg_collation c",
975 .selcondition =
"c.collencoding IN (-1, pg_catalog.pg_char_to_encoding(pg_catalog.getdatabaseencoding()))",
976 .viscondition =
"pg_catalog.pg_collation_is_visible(c.oid)",
977 .namespace =
"c.collnamespace",
978 .result =
"c.collname",
982 .catname =
"pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_inherits i",
983 .selcondition =
"c1.oid=i.inhparent and i.inhrelid=c2.oid and c2.relispartition",
984 .viscondition =
"pg_catalog.pg_table_is_visible(c2.oid)",
985 .namespace =
"c2.relnamespace",
986 .result =
"c2.relname",
987 .refname =
"c1.relname",
988 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
989 .refnamespace =
"c1.relnamespace",
993 .catname =
"pg_catalog.pg_rewrite r, pg_catalog.pg_class c1",
994 .selcondition =
"r.ev_class=c1.oid",
995 .result =
"r.rulename",
996 .refname =
"c1.relname",
997 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
998 .refnamespace =
"c1.relnamespace",
1002 .catname =
"pg_catalog.pg_trigger t, pg_catalog.pg_class c1",
1003 .selcondition =
"t.tgrelid=c1.oid and not t.tgisinternal",
1004 .result =
"t.tgname",
1005 .refname =
"c1.relname",
1006 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
1007 .refnamespace =
"c1.relnamespace",
1030#define Query_for_list_of_template_databases \
1032" FROM pg_catalog.pg_database d "\
1033" WHERE d.datname LIKE '%s' "\
1034" AND (d.datistemplate OR pg_catalog.pg_has_role(d.datdba, 'USAGE'))"
1036#define Query_for_list_of_databases \
1037"SELECT datname FROM pg_catalog.pg_database "\
1038" WHERE datname LIKE '%s'"
1040#define Query_for_list_of_database_vars \
1041"SELECT conf FROM ("\
1042" SELECT setdatabase, pg_catalog.split_part(pg_catalog.unnest(setconfig),'=',1) conf"\
1043" FROM pg_db_role_setting "\
1044" ) s, pg_database d "\
1045" WHERE s.setdatabase = d.oid "\
1046" AND conf LIKE '%s'"\
1047" AND d.datname LIKE '%s'"
1049#define Query_for_list_of_tablespaces \
1050"SELECT spcname FROM pg_catalog.pg_tablespace "\
1051" WHERE spcname LIKE '%s'"
1053#define Query_for_list_of_encodings \
1054" SELECT DISTINCT pg_catalog.pg_encoding_to_char(conforencoding) "\
1055" FROM pg_catalog.pg_conversion "\
1056" WHERE pg_catalog.pg_encoding_to_char(conforencoding) LIKE pg_catalog.upper('%s')"
1058#define Query_for_list_of_languages \
1060" FROM pg_catalog.pg_language "\
1061" WHERE lanname != 'internal' "\
1062" AND lanname LIKE '%s'"
1064#define Query_for_list_of_schemas \
1065"SELECT nspname FROM pg_catalog.pg_namespace "\
1066" WHERE nspname LIKE '%s'"
1069#define Query_for_list_of_alter_system_set_vars \
1070"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\
1071" WHERE context != 'internal' "\
1072" AND pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1074#define Query_for_list_of_set_vars \
1075"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\
1076" WHERE context IN ('user', 'superuser') "\
1077" AND pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1079#define Query_for_list_of_show_vars \
1080"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\
1081" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1083#define Query_for_list_of_roles \
1085" FROM pg_catalog.pg_roles "\
1086" WHERE rolname LIKE '%s'"
1089#define Keywords_for_list_of_owner_roles \
1090"CURRENT_ROLE", "CURRENT_USER", "SESSION_USER"
1093#define Keywords_for_list_of_grant_roles \
1094Keywords_for_list_of_owner_roles, "PUBLIC"
1096#define Query_for_all_table_constraints \
1098" FROM pg_catalog.pg_constraint c "\
1099" WHERE c.conrelid <> 0 "\
1100" and conname LIKE '%s'"
1102#define Query_for_list_of_fdws \
1104" FROM pg_catalog.pg_foreign_data_wrapper "\
1105" WHERE fdwname LIKE '%s'"
1107#define Query_for_list_of_servers \
1109" FROM pg_catalog.pg_foreign_server "\
1110" WHERE srvname LIKE '%s'"
1112#define Query_for_list_of_user_mappings \
1114" FROM pg_catalog.pg_user_mappings "\
1115" WHERE usename LIKE '%s'"
1117#define Query_for_list_of_user_vars \
1118"SELECT conf FROM ("\
1119" SELECT rolname, pg_catalog.split_part(pg_catalog.unnest(rolconfig),'=',1) conf"\
1120" FROM pg_catalog.pg_roles"\
1122" WHERE s.conf like '%s' "\
1123" AND s.rolname LIKE '%s'"
1125#define Query_for_list_of_access_methods \
1127" FROM pg_catalog.pg_am "\
1128" WHERE amname LIKE '%s'"
1130#define Query_for_list_of_index_access_methods \
1132" FROM pg_catalog.pg_am "\
1133" WHERE amname LIKE '%s' AND "\
1134" amtype=" CppAsString2(AMTYPE_INDEX)
1136#define Query_for_list_of_table_access_methods \
1138" FROM pg_catalog.pg_am "\
1139" WHERE amname LIKE '%s' AND "\
1140" amtype=" CppAsString2(AMTYPE_TABLE)
1142#define Query_for_list_of_extensions \
1144" FROM pg_catalog.pg_extension "\
1145" WHERE extname LIKE '%s'"
1147#define Query_for_list_of_available_extensions \
1149" FROM pg_catalog.pg_available_extensions "\
1150" WHERE name LIKE '%s' AND installed_version IS NULL"
1152#define Query_for_list_of_available_extension_versions \
1154" FROM pg_catalog.pg_available_extension_versions "\
1155" WHERE version LIKE '%s' AND name='%s'"
1157#define Query_for_list_of_prepared_statements \
1159" FROM pg_catalog.pg_prepared_statements "\
1160" WHERE name LIKE '%s'"
1162#define Query_for_list_of_event_triggers \
1164" FROM pg_catalog.pg_event_trigger "\
1165" WHERE evtname LIKE '%s'"
1167#define Query_for_list_of_tablesample_methods \
1169" FROM pg_catalog.pg_proc "\
1170" WHERE prorettype = 'pg_catalog.tsm_handler'::pg_catalog.regtype AND "\
1171" proargtypes[0] = 'pg_catalog.internal'::pg_catalog.regtype AND "\
1174#define Query_for_list_of_policies \
1176" FROM pg_catalog.pg_policy "\
1177" WHERE polname LIKE '%s'"
1179#define Query_for_values_of_enum_GUC \
1180" SELECT val FROM ( "\
1181" SELECT name, pg_catalog.unnest(enumvals) AS val "\
1182" FROM pg_catalog.pg_settings "\
1184" WHERE val LIKE '%s'"\
1185" and pg_catalog.lower(name)=pg_catalog.lower('%s')"
1187#define Query_for_list_of_channels \
1189" FROM pg_catalog.pg_listening_channels() AS channel "\
1190" WHERE channel LIKE '%s'"
1192#define Query_for_list_of_cursors \
1194" FROM pg_catalog.pg_cursors "\
1195" WHERE name LIKE '%s'"
1197#define Query_for_list_of_timezone_names_unquoted \
1199" FROM pg_catalog.pg_timezone_names() "\
1200" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1202#define Query_for_list_of_timezone_names_quoted_out \
1203"SELECT pg_catalog.quote_literal(name) AS name "\
1204" FROM pg_catalog.pg_timezone_names() "\
1205" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1207#define Query_for_list_of_timezone_names_quoted_in \
1208"SELECT pg_catalog.quote_literal(name) AS name "\
1209" FROM pg_catalog.pg_timezone_names() "\
1210" WHERE pg_catalog.quote_literal(pg_catalog.lower(name)) LIKE pg_catalog.lower('%s')"
1213#define Privilege_options_of_grant_and_revoke \
1214"SELECT", "INSERT", "UPDATE", "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER", \
1215"CREATE", "CONNECT", "TEMPORARY", "EXECUTE", "USAGE", "SET", "ALTER SYSTEM", \
1219#define Alter_procedure_options \
1220"DEPENDS ON EXTENSION", "EXTERNAL SECURITY", "NO DEPENDS ON EXTENSION", \
1221"OWNER TO", "RENAME TO", "RESET", "SECURITY", "SET"
1224#define Alter_routine_options \
1225Alter_procedure_options, "COST", "IMMUTABLE", "LEAKPROOF", "NOT LEAKPROOF", \
1226"PARALLEL", "ROWS", "STABLE", "VOLATILE"
1229#define Alter_function_options \
1230Alter_routine_options, "CALLED ON NULL INPUT", "RETURNS NULL ON NULL INPUT", \
1234#define Copy_common_options \
1235"DELIMITER", "ENCODING", "ESCAPE", "FORMAT", "HEADER", "NULL", "QUOTE"
1238#define Copy_from_options \
1239Copy_common_options, "DEFAULT", "FORCE_NOT_NULL", "FORCE_NULL", "FREEZE", \
1240"LOG_VERBOSITY", "ON_ERROR", "REJECT_LIMIT"
1243#define Copy_to_options \
1244Copy_common_options, "FORCE_QUOTE", "FORCE_ARRAY"
1255 " FROM pg_catalog.pg_publication "
1256 " WHERE pubname LIKE '%s'"
1263 " SELECT s.subname "
1264 " FROM pg_catalog.pg_subscription s, pg_catalog.pg_database d "
1265 " WHERE s.subname LIKE '%s' "
1266 " AND d.datname = pg_catalog.current_database() "
1267 " AND s.subdbid = d.oid"
1274 "ABORT",
"ALTER",
"ANALYZE",
"BEGIN",
"CALL",
"CHECKPOINT",
"CLOSE",
"CLUSTER",
1275 "COMMENT",
"COMMIT",
"COPY",
"CREATE",
"DEALLOCATE",
"DECLARE",
1276 "DELETE FROM",
"DISCARD",
"DO",
"DROP",
"END",
"EXECUTE",
"EXPLAIN",
1277 "FETCH",
"GRANT",
"IMPORT FOREIGN SCHEMA",
"INSERT INTO",
"LISTEN",
"LOAD",
"LOCK",
1278 "MERGE INTO",
"MOVE",
"NOTIFY",
"PREPARE",
1279 "REASSIGN",
"REFRESH MATERIALIZED VIEW",
"REINDEX",
"RELEASE",
"REPACK",
1280 "RESET",
"REVOKE",
"ROLLBACK",
1281 "SAVEPOINT",
"SECURITY LABEL",
"SELECT",
"SET",
"SHOW",
"START",
1282 "TABLE",
"TRUNCATE",
"UNLISTEN",
"UPDATE",
"VACUUM",
"VALUES",
1303#define THING_NO_CREATE (1 << 0)
1304#define THING_NO_DROP (1 << 1)
1305#define THING_NO_ALTER (1 << 2)
1306#define THING_NO_SHOW (THING_NO_CREATE | THING_NO_DROP | THING_NO_ALTER)
1326 {
"CONVERSION",
"SELECT conname FROM pg_catalog.pg_conversion WHERE conname LIKE '%s'"},
1352 {
"RULE",
"SELECT rulename FROM pg_catalog.pg_rules WHERE rulename LIKE '%s'"},
1368 {
"TRIGGER",
"SELECT tgname FROM pg_catalog.pg_trigger WHERE tgname LIKE '%s' AND NOT tgisinternal"},
1398#define MatchAny NULL
1399#define MatchAnyExcept(pattern) ("!" pattern)
1408 const char *
const *words;
1412#define TCPAT(id, kind, ...) \
1413 { (id), (kind), VA_ARGS_NARGS(__VA_ARGS__), \
1414 (const char * const []) { __VA_ARGS__ } }
1416#ifdef SWITCH_CONVERSION_APPLIED
1427 "autovacuum_analyze_scale_factor",
1428 "autovacuum_analyze_threshold",
1429 "autovacuum_enabled",
1430 "autovacuum_freeze_max_age",
1431 "autovacuum_freeze_min_age",
1432 "autovacuum_freeze_table_age",
1433 "autovacuum_multixact_freeze_max_age",
1434 "autovacuum_multixact_freeze_min_age",
1435 "autovacuum_multixact_freeze_table_age",
1436 "autovacuum_parallel_workers",
1437 "autovacuum_vacuum_cost_delay",
1438 "autovacuum_vacuum_cost_limit",
1439 "autovacuum_vacuum_insert_scale_factor",
1440 "autovacuum_vacuum_insert_threshold",
1441 "autovacuum_vacuum_max_threshold",
1442 "autovacuum_vacuum_scale_factor",
1443 "autovacuum_vacuum_threshold",
1445 "log_autovacuum_min_duration",
1446 "log_autoanalyze_min_duration",
1448 "toast.autovacuum_enabled",
1449 "toast.autovacuum_freeze_max_age",
1450 "toast.autovacuum_freeze_min_age",
1451 "toast.autovacuum_freeze_table_age",
1452 "toast.autovacuum_multixact_freeze_max_age",
1453 "toast.autovacuum_multixact_freeze_min_age",
1454 "toast.autovacuum_multixact_freeze_table_age",
1455 "toast.autovacuum_vacuum_cost_delay",
1456 "toast.autovacuum_vacuum_cost_limit",
1457 "toast.autovacuum_vacuum_insert_scale_factor",
1458 "toast.autovacuum_vacuum_insert_threshold",
1459 "toast.autovacuum_vacuum_max_threshold",
1460 "toast.autovacuum_vacuum_scale_factor",
1461 "toast.autovacuum_vacuum_threshold",
1462 "toast.log_autovacuum_min_duration",
1463 "toast.vacuum_index_cleanup",
1464 "toast.vacuum_max_eager_freeze_failure_rate",
1465 "toast.vacuum_truncate",
1466 "toast_tuple_target",
1467 "user_catalog_table",
1468 "vacuum_index_cleanup",
1469 "vacuum_max_eager_freeze_failure_rate",
1505 int *
maxvars,
const char *varname,
1506 const char *prefix,
const char *suffix);
1508 const char *prefix,
const char *suffix,
bool need_value);
1527#ifdef USE_FILENAME_QUOTING_FUNCTIONS
1542#ifdef USE_FILENAME_QUOTING_FUNCTIONS
1564#ifdef HAVE_RL_FILENAME_QUOTE_CHARACTERS
1568 for (
int i = 0;
i < 255;
i++)
1569 fqc[
i] = (
unsigned char) (
i + 1);
1601 bool case_sensitive)
1605#define cimatch(s1, s2, n) \
1606 (case_sensitive ? strncmp(s1, s2, n) == 0 : pg_strncasecmp(s1, s2, n) == 0)
1609 if (pattern ==
NULL)
1613 if (*pattern ==
'!')
1625 while (*
c !=
'\0' && *
c !=
'|')
1646 if (wordlen == (
c - pattern) &&
1670 int narg,
const char *
const *args)
1720 int narg,
const char *
const *args)
1773 int narg,
const char *
const *args)
1857 size_t length =
strlen(s);
1859 return (length > 0 && s[length - 1] ==
c);
1892#define prev_wd (previous_words[0])
1893#define prev2_wd (previous_words[1])
1894#define prev3_wd (previous_words[2])
1895#define prev4_wd (previous_words[3])
1896#define prev5_wd (previous_words[4])
1897#define prev6_wd (previous_words[5])
1898#define prev7_wd (previous_words[6])
1899#define prev8_wd (previous_words[7])
1900#define prev9_wd (previous_words[8])
1903#define TailMatches(...) \
1904 TailMatchesImpl(false, previous_words_count, previous_words, \
1905 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1908#define TailMatchesCS(...) \
1909 TailMatchesImpl(true, previous_words_count, previous_words, \
1910 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1913#define Matches(...) \
1914 MatchesImpl(false, previous_words_count, previous_words, \
1915 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1918#define MatchesCS(...) \
1919 MatchesImpl(true, previous_words_count, previous_words, \
1920 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1923#define HeadMatches(...) \
1924 HeadMatchesImpl(false, previous_words_count, previous_words, \
1925 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1928#define HeadMatchesCS(...) \
1929 HeadMatchesImpl(true, previous_words_count, previous_words, \
1930 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1935 "\\bind",
"\\bind_named",
1936 "\\connect",
"\\conninfo",
"\\C",
"\\cd",
"\\close_prepared",
"\\copy",
1937 "\\copyright",
"\\crosstabview",
1938 "\\d",
"\\da",
"\\dA",
"\\dAc",
"\\dAf",
"\\dAo",
"\\dAp",
1939 "\\db",
"\\dc",
"\\dconfig",
"\\dC",
"\\dd",
"\\ddp",
"\\dD",
1940 "\\des",
"\\det",
"\\deu",
"\\dew",
"\\dE",
"\\df",
1941 "\\dF",
"\\dFd",
"\\dFp",
"\\dFt",
"\\dg",
"\\di",
"\\dl",
"\\dL",
1942 "\\dm",
"\\dn",
"\\do",
"\\dO",
"\\dp",
"\\dP",
"\\dPi",
"\\dPt",
1943 "\\drds",
"\\drg",
"\\dRs",
"\\dRp",
"\\ds",
1944 "\\dt",
"\\dT",
"\\dv",
"\\du",
"\\dx",
"\\dX",
"\\dy",
1945 "\\echo",
"\\edit",
"\\ef",
"\\elif",
"\\else",
"\\encoding",
1946 "\\endif",
"\\endpipeline",
"\\errverbose",
"\\ev",
1947 "\\f",
"\\flush",
"\\flushrequest",
1948 "\\g",
"\\gdesc",
"\\getenv",
"\\getresults",
"\\gexec",
"\\gset",
"\\gx",
1950 "\\if",
"\\include",
"\\include_relative",
"\\ir",
1951 "\\list",
"\\lo_import",
"\\lo_export",
"\\lo_list",
"\\lo_unlink",
1953 "\\parse",
"\\password",
"\\print",
"\\prompt",
"\\pset",
1954 "\\qecho",
"\\quit",
1955 "\\reset",
"\\restrict",
1956 "\\s",
"\\sendpipeline",
"\\set",
"\\setenv",
"\\sf",
1957 "\\startpipeline",
"\\sv",
"\\syncpipeline",
1958 "\\t",
"\\T",
"\\timing",
1959 "\\unrestrict",
"\\unset",
1961 "\\warn",
"\\watch",
"\\write",
1999 if (
text[0] ==
'\\')
2003 else if (
text[0] ==
':' &&
text[1] !=
':')
2005 if (
text[1] ==
'\'')
2007 else if (
text[1] ==
'"')
2009 else if (
text[1] ==
'{' &&
text[2] ==
'?')
2022#ifdef SWITCH_CONVERSION_APPLIED
2040 switch (
tcpat->kind)
2115 else if (
wac->vquery)
2118 else if (
wac->squery)
2136#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
2215 COMPLETE_WITH(
"AGGREGATE",
"COLLATION",
"DOMAIN",
"FUNCTION",
2216 "INDEX",
"OPERATOR",
"PROCEDURE",
"SEQUENCE",
"TABLE",
2217 "TEXT SEARCH CONFIGURATION",
"TEXT SEARCH DICTIONARY",
2218 "TEXT SEARCH PARSER",
"TEXT SEARCH TEMPLATE",
2219 "TRIGGER",
"TYPE",
"VIEW",
2221 "UNIQUE",
"UNLOGGED");
2227 COMPLETE_WITH(
"FUNCTION",
"PROCEDURE",
"LANGUAGE",
"RULE",
"VIEW",
2228 "AGGREGATE",
"TRANSFORM",
"TRIGGER");
2238 else if (
Matches(
"ALTER",
"TABLE"))
2240 "ALL IN TABLESPACE");
2255 else if (
Matches(
"ALTER",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
2307 COMPLETE_WITH(
"ADD",
"DROP",
"OWNER TO",
"RENAME TO",
"SET");
2311 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"ADD|SET",
"TABLE"))
2338 COMPLETE_WITH(
"(",
"ALL SEQUENCES",
"ALL TABLES",
"TABLES IN SCHEMA",
"TABLE");
2341 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES"))
2343 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT"))
2345 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"("))
2348 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
2350 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
2352 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
2354 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"ADD|DROP|SET",
"TABLES",
"IN",
"SCHEMA"))
2356 " AND nspname NOT LIKE E'pg\\\\_%%'",
2360 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
2363 COMPLETE_WITH(
"CONNECTION",
"ENABLE",
"DISABLE",
"OWNER TO",
2364 "RENAME TO",
"REFRESH PUBLICATION",
"REFRESH SEQUENCES",
2365 "SERVER",
"SET",
"SKIP (",
"ADD PUBLICATION",
"DROP PUBLICATION");
2380 "max_retention_duration",
"origin",
2381 "password_required",
"retain_dead_tuples",
2382 "run_as_owner",
"slot_name",
"streaming",
2383 "synchronous_commit",
"two_phase",
2384 "wal_receiver_timeout");
2395 "ADD|DROP|SET",
"PUBLICATION",
MatchAny))
2399 "ADD|DROP|SET",
"PUBLICATION",
MatchAny,
"WITH",
"("))
2408 COMPLETE_WITH(
"OWNER TO",
"REFRESH VERSION",
"RENAME TO",
"SET SCHEMA");
2416 COMPLETE_WITH(
"RESET",
"SET",
"OWNER TO",
"REFRESH COLLATION VERSION",
"RENAME TO",
2417 "IS_TEMPLATE",
"ALLOW_CONNECTIONS",
2418 "CONNECTION LIMIT");
2432 else if (
Matches(
"ALTER",
"EVENT",
"TRIGGER"))
2437 COMPLETE_WITH(
"DISABLE",
"ENABLE",
"OWNER TO",
"RENAME TO");
2449 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
2450 "CONVERSION",
"DOMAIN",
"EVENT TRIGGER",
"FOREIGN",
2451 "FUNCTION",
"MATERIALIZED VIEW",
"OPERATOR",
2452 "LANGUAGE",
"PROCEDURE",
"ROUTINE",
"SCHEMA",
2453 "SEQUENCE",
"SERVER",
"TABLE",
"TEXT SEARCH",
2454 "TRANSFORM FOR",
"TYPE",
"VIEW");
2457 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"FOREIGN"))
2461 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"OPERATOR"))
2465 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"TEXT",
"SEARCH"))
2466 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
2480 else if (
Matches(
"ALTER",
"FOREIGN"))
2486 "OPTIONS",
"OWNER TO",
"RENAME TO",
"VALIDATOR");
2487 else if (
Matches(
"ALTER",
"FOREIGN",
"DATA",
"WRAPPER",
MatchAny,
"NO"))
2492 COMPLETE_WITH(
"ADD",
"ALTER",
"DISABLE TRIGGER",
"DROP",
"ENABLE",
2493 "INHERIT",
"NO INHERIT",
"OPTIONS",
"OWNER TO",
2494 "RENAME",
"SET",
"VALIDATE CONSTRAINT");
2497 else if (
Matches(
"ALTER",
"INDEX"))
2499 "ALL IN TABLESPACE");
2502 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME TO",
"SET",
2503 "RESET",
"ATTACH PARTITION",
2504 "DEPENDS ON EXTENSION",
"NO DEPENDS ON EXTENSION");
2538 "deduplicate_items",
2539 "fastupdate",
"gin_pending_list_limit",
2541 "pages_per_range",
"autosummarize"
2545 "deduplicate_items =",
2546 "fastupdate =",
"gin_pending_list_limit =",
2548 "pages_per_range =",
"autosummarize ="
2564 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW"))
2566 "ALL IN TABLESPACE");
2571 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2572 "ENCRYPTED PASSWORD",
"IN",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2573 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2574 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2575 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2576 "VALID UNTIL",
"WITH");
2600 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2601 "ENCRYPTED PASSWORD",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2602 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2603 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2604 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2608 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
2611 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR"))
2614 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN"))
2617 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2621 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2625 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2630 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2632 Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2638 "VALIDATE CONSTRAINT");
2649 else if (
Matches(
"ALTER",
"DOMAIN",
MatchAny,
"DROP|RENAME|VALIDATE",
"CONSTRAINT"))
2666 COMPLETE_WITH(
"AS",
"INCREMENT",
"MINVALUE",
"MAXVALUE",
"RESTART",
2667 "START",
"NO",
"CACHE",
"CYCLE",
"SET",
"OWNED BY",
2668 "OWNER TO",
"RENAME TO");
2680 COMPLETE_WITH(
"VERSION",
"OPTIONS",
"OWNER TO",
"RENAME TO");
2685 else if (
Matches(
"ALTER",
"SYSTEM"))
2687 else if (
Matches(
"ALTER",
"SYSTEM",
"SET|RESET"))
2694 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME",
"RESET",
"SET");
2698 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2721 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"check_option",
"="))
2723 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"security_barrier|security_invoker",
"="))
2728 COMPLETE_WITH(
"ALTER COLUMN",
"CLUSTER ON",
"DEPENDS ON EXTENSION",
2729 "NO DEPENDS ON EXTENSION",
"OWNER TO",
"RENAME",
2732 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"RENAME"))
2734 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2744 COMPLETE_WITH(
"(",
"ACCESS METHOD",
"SCHEMA",
"TABLESPACE",
"WITHOUT CLUSTER");
2746 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
2750 else if (
Matches(
"ALTER",
"POLICY"))
2763 COMPLETE_WITH(
"RENAME TO",
"TO",
"USING (",
"WITH CHECK (");
2776 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH"))
2779 COMPLETE_WITH(
"ADD",
"ALTER",
"DROP",
"OWNER TO",
"RENAME TO",
"SET SCHEMA");
2780 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|ALTER|DROP"))
2782 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|DROP",
"VERTEX|EDGE"))
2786 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ALTER",
"VERTEX|EDGE"))
2806 COMPLETE_WITH(
"OWNER TO",
"RENAME TO",
"SET SCHEMA",
"SET STATISTICS");
2824 "NO DEPENDS ON EXTENSION");
2830 COMPLETE_WITH(
"ADD",
"ALTER",
"CLUSTER ON",
"DISABLE",
"DROP",
2831 "ENABLE",
"INHERIT",
"NO",
"RENAME",
"RESET",
2832 "OWNER TO",
"SET",
"VALIDATE CONSTRAINT",
2833 "REPLICA IDENTITY",
"ATTACH PARTITION",
2834 "DETACH PARTITION",
"FORCE ROW LEVEL SECURITY",
2835 "SPLIT PARTITION",
"MERGE PARTITIONS (",
2843 COMPLETE_WITH(
"COLUMN",
"CONSTRAINT",
"CHECK (",
"NOT NULL",
"UNIQUE",
2844 "PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2852 COMPLETE_WITH(
"CHECK (",
"NOT NULL",
"UNIQUE",
"PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2859 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY") ||
2865 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY",
"USING",
"INDEX"))
2871 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"UNIQUE",
"USING",
"INDEX"))
2878 "PRIMARY",
"KEY",
"USING",
"INDEX"))
2885 "UNIQUE",
"USING",
"INDEX"))
2892 COMPLETE_WITH(
"ALWAYS",
"REPLICA",
"ROW LEVEL SECURITY",
"RULE",
2894 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ENABLE",
"REPLICA|ALWAYS"))
2946 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2964 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|DROP|RENAME",
"CONSTRAINT"))
2970 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"VALIDATE",
"CONSTRAINT"))
2978 COMPLETE_WITH(
"TYPE",
"SET",
"RESET",
"RESTART",
"ADD",
"DROP");
2996 COMPLETE_WITH(
"(",
"COMPRESSION",
"DATA TYPE",
"DEFAULT",
"EXPRESSION",
"GENERATED",
"NOT NULL",
2997 "STATISTICS",
"STORAGE",
2999 "INCREMENT",
"MINVALUE",
"MAXVALUE",
"START",
"NO",
"CACHE",
"CYCLE");
3027 COMPLETE_WITH(
"DEFAULT",
"PLAIN",
"EXTERNAL",
"EXTENDED",
"MAIN");
3037 COMPLETE_WITH(
"DEFAULT",
"EXPRESSION",
"IDENTITY",
"NOT NULL");
3048 "TABLESPACE",
"UNLOGGED",
"WITH",
"WITHOUT");
3054 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
3073 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING",
"INDEX"))
3078 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING"))
3101 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"DETACH|SPLIT",
"PARTITION"))
3114 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"("))
3119 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"(*)"))
3135 "effective_io_concurrency",
"maintenance_io_concurrency");
3138 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH"))
3139 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3140 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"TEMPLATE|PARSER",
MatchAny))
3144 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"CONFIGURATION",
MatchAny))
3147 "OWNER TO",
"RENAME TO",
"SET SCHEMA");
3151 COMPLETE_WITH(
"ADD ATTRIBUTE",
"ADD VALUE",
"ALTER ATTRIBUTE",
3153 "OWNER TO",
"RENAME",
"SET SCHEMA",
"SET (");
3171 else if (
Matches(
"ALTER",
"TYPE",
MatchAny,
"ALTER|DROP|RENAME",
"ATTRIBUTE"))
3196 COMPLETE_WITH(
"ANALYZE",
"RECEIVE",
"SEND",
"STORAGE",
"SUBSCRIPT",
3197 "TYPMOD_IN",
"TYPMOD_OUT");
3215 "(",
"VERBOSE",
"ONLY");
3216 else if (
Matches(
"ANALYZE",
"VERBOSE"))
3228 COMPLETE_WITH(
"VERBOSE",
"SKIP_LOCKED",
"BUFFER_USAGE_LIMIT");
3232 else if (
Matches(
"ANALYZE",
"(*)"))
3243 COMPLETE_WITH(
"WORK",
"TRANSACTION",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
3245 else if (
Matches(
"END|ABORT"))
3255 COMPLETE_WITH(
"AND",
"WORK",
"TRANSACTION",
"TO SAVEPOINT",
"PREPARED");
3256 else if (
Matches(
"ABORT|END|COMMIT|ROLLBACK",
"AND"))
3264 else if (
Matches(
"CHECKPOINT"))
3289 else if (
Matches(
"CLUSTER",
"VERBOSE") ||
3320 else if (
Matches(
"COMMENT",
"ON"))
3321 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
3322 "COLUMN",
"CONSTRAINT",
"CONVERSION",
"DATABASE",
3323 "DOMAIN",
"EXTENSION",
"EVENT TRIGGER",
3324 "FOREIGN DATA WRAPPER",
"FOREIGN TABLE",
3325 "FUNCTION",
"INDEX",
"LANGUAGE",
"LARGE OBJECT",
3326 "MATERIALIZED VIEW",
"OPERATOR",
"POLICY",
3327 "PROCEDURE",
"PROCEDURAL LANGUAGE",
"PROPERTY GRAPH",
"PUBLICATION",
"ROLE",
3328 "ROUTINE",
"RULE",
"SCHEMA",
"SEQUENCE",
"SERVER",
3329 "STATISTICS",
"SUBSCRIPTION",
"TABLE",
3330 "TABLESPACE",
"TEXT SEARCH",
"TRANSFORM FOR",
3331 "TRIGGER",
"TYPE",
"VIEW");
3332 else if (
Matches(
"COMMENT",
"ON",
"ACCESS",
"METHOD"))
3334 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT"))
3344 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT",
MatchAny,
"ON",
"DOMAIN"))
3346 else if (
Matches(
"COMMENT",
"ON",
"EVENT",
"TRIGGER"))
3348 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN"))
3350 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN",
"TABLE"))
3352 else if (
Matches(
"COMMENT",
"ON",
"MATERIALIZED",
"VIEW"))
3354 else if (
Matches(
"COMMENT",
"ON",
"POLICY"))
3363 else if (
Matches(
"COMMENT",
"ON",
"PROCEDURAL",
"LANGUAGE"))
3365 else if (
Matches(
"COMMENT",
"ON",
"PROPERTY",
"GRAPH"))
3374 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH"))
3375 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3376 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"CONFIGURATION"))
3378 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"DICTIONARY"))
3380 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"PARSER"))
3382 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"TEMPLATE"))
3384 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR"))
3388 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3412 else if (
Matches(
"COPY|\\copy"))
3415 else if (
Matches(
"COPY|\\copy",
"("))
3416 COMPLETE_WITH(
"SELECT",
"TABLE",
"VALUES",
"INSERT INTO",
"UPDATE",
"DELETE FROM",
"MERGE INTO",
"WITH");
3526 "PROVIDER =",
"DETERMINISTIC =");
3535 COMPLETE_WITH(
"OWNER",
"TEMPLATE",
"ENCODING",
"TABLESPACE",
3536 "IS_TEMPLATE",
"STRATEGY",
3537 "ALLOW_CONNECTIONS",
"CONNECTION LIMIT",
3538 "LC_COLLATE",
"LC_CTYPE",
"LOCALE",
"OID",
3539 "LOCALE_PROVIDER",
"ICU_LOCALE");
3553 "NOT NULL",
"NULL",
"CHECK (");
3559 else if (
Matches(
"CREATE",
"EXTENSION"))
3572 else if (
Matches(
"CREATE",
"FOREIGN"))
3577 COMPLETE_WITH(
"CONNECTION",
"HANDLER",
"OPTIONS",
"VALIDATOR");
3594 "ON",
"CONCURRENTLY");
3608 else if (
TailMatches(
"CREATE|UNIQUE",
"INDEX",
"CONCURRENTLY"))
3640 else if (
Matches(
"CREATE",
"OR"))
3652 COMPLETE_WITH(
"AS",
"FOR",
"TO",
"USING (",
"WITH CHECK (");
3665 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3688 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3727 else if (
Matches(
"CREATE",
"PROPERTY"))
3731 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE"))
3733 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES"))
3735 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"("))
3737 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"(*)"))
3748 COMPLETE_WITH(
"FOR TABLE",
"FOR TABLES IN SCHEMA",
"FOR ALL TABLES",
"FOR ALL SEQUENCES",
"WITH (");
3750 COMPLETE_WITH(
"TABLE",
"TABLES IN SCHEMA",
"ALL TABLES",
"ALL SEQUENCES");
3753 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES"))
3755 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT"))
3757 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"("))
3759 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
3761 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
3763 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
3787 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"TABLES",
"IN",
"SCHEMA"))
3789 " AND nspname NOT LIKE E'pg\\\\_%%'",
3795 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
3815 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE"))
3818 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE",
"TO"))
3822 else if (
Matches(
"CREATE",
"SCHEMA"))
3825 else if (
Matches(
"CREATE",
"SCHEMA",
"AUTHORIZATION") ||
3838 COMPLETE_WITH(
"AS",
"INCREMENT BY",
"MINVALUE",
"MAXVALUE",
"NO",
3839 "CACHE",
"CYCLE",
"OWNED BY",
"START WITH");
3890 COMPLETE_WITH(
"EXECUTE",
"SELECT",
"TABLE",
"VALUES",
"WITH");
3893 COMPLETE_WITH(
"AS",
"INHERITS (",
"PARTITION BY",
"USING",
"TABLESPACE",
"WITH (");
3895 COMPLETE_WITH(
"AS",
"INHERITS (",
"USING",
"TABLESPACE",
"WITH (");
3897 COMPLETE_WITH(
"AS",
"INHERITS (",
"ON COMMIT",
"PARTITION BY",
"USING",
3898 "TABLESPACE",
"WITH (");
3908 else if (
TailMatches(
"CREATE",
"TEMP|TEMPORARY",
"TABLE",
MatchAny,
"(*)",
"ON",
"COMMIT"))
3920 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3921 else if (
TailMatches(
"CREATE",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
3925 else if (
Matches(
"CREATE",
"TRANSFORM") ||
3926 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM"))
3928 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR") ||
3929 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR"))
3934 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE") ||
3935 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3964 COMPLETE_WITH(
"binary",
"connect",
"copy_data",
"create_slot",
3965 "disable_on_error",
"enabled",
"failover",
3966 "max_retention_duration",
"origin",
3967 "password_required",
"retain_dead_tuples",
3968 "run_as_owner",
"slot_name",
"streaming",
3969 "synchronous_commit",
"two_phase",
3970 "wal_receiver_timeout");
4027 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4030 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4037 "INITIALLY",
"IMMEDIATE|DEFERRED") ||
4039 "INITIALLY",
"IMMEDIATE|DEFERRED"))
4042 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4044 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4052 "OLD|NEW",
"TABLE") ||
4054 "OLD|NEW",
"TABLE"))
4057 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4059 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4061 "REFERENCING",
"OLD",
"TABLE",
MatchAny) ||
4063 "REFERENCING",
"OLD",
"TABLE",
MatchAny))
4066 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4068 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4071 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4073 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4075 "REFERENCING",
"NEW",
"TABLE",
MatchAny) ||
4077 "REFERENCING",
"NEW",
"TABLE",
MatchAny))
4080 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4082 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4085 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4087 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4089 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4091 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4093 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4095 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4097 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4099 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny))
4117 "FOR",
"EACH",
"ROW|STATEMENT") ||
4119 "FOR",
"EACH",
"ROW|STATEMENT") ||
4121 "FOR",
"ROW|STATEMENT") ||
4123 "FOR",
"ROW|STATEMENT"))
4156 "EXECUTE",
"FUNCTION|PROCEDURE") ||
4158 "EXECUTE",
"FUNCTION|PROCEDURE"))
4164 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4165 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4166 "LOGIN",
"NOBYPASSRLS",
4167 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4168 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4169 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4170 "VALID UNTIL",
"WITH");
4175 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4176 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4177 "LOGIN",
"NOBYPASSRLS",
4178 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4179 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4180 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4205 "TYPMOD_IN",
"TYPMOD_OUT",
"ANALYZE",
"SUBSCRIPT",
4206 "INTERNALLENGTH",
"PASSEDBYVALUE",
"ALIGNMENT",
4207 "STORAGE",
"LIKE",
"CATEGORY",
"PREFERRED",
4208 "DEFAULT",
"ELEMENT",
"DELIMITER",
4219 "CANONICAL",
"SUBTYPE_DIFF",
4220 "MULTIRANGE_TYPE_NAME");
4247 TailMatches(
"CREATE",
"OR",
"REPLACE",
"VIEW",
MatchAny,
"WITH",
"(",
"check_option",
"="))
4259 else if (
Matches(
"CREATE",
"MATERIALIZED"))
4269 else if (
Matches(
"CREATE",
"MATERIALIZED",
"VIEW",
MatchAny,
"USING"))
4284 else if (
Matches(
"CREATE",
"EVENT"))
4291 COMPLETE_WITH(
"ddl_command_start",
"ddl_command_end",
"login",
4292 "sql_drop",
"table_rewrite");
4313 else if (
Matches(
"CREATE",
"EVENT",
"TRIGGER",
MatchAnyN,
"EXECUTE",
"FUNCTION|PROCEDURE"))
4317 else if (
Matches(
"DEALLOCATE"))
4328 COMPLETE_WITH(
"BINARY",
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
4339 COMPLETE_WITH(
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
"CURSOR");
4398 "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|PUBLICATION|SCHEMA|SEQUENCE|SERVER|SUBSCRIPTION|STATISTICS|TABLE|TYPE|VIEW",
4404 Matches(
"DROP",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
4411 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
4413 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny,
"("))
4415 else if (
Matches(
"DROP",
"FOREIGN"))
4423 else if (
Matches(
"DROP",
"INDEX"))
4426 else if (
Matches(
"DROP",
"INDEX",
"CONCURRENTLY"))
4434 else if (
Matches(
"DROP",
"MATERIALIZED"))
4436 else if (
Matches(
"DROP",
"MATERIALIZED",
"VIEW"))
4442 else if (
Matches(
"DROP",
"OWNED"))
4444 else if (
Matches(
"DROP",
"OWNED",
"BY"))
4450 else if (
Matches(
"DROP",
"TEXT",
"SEARCH"))
4451 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
4465 else if (
Matches(
"DROP",
"ACCESS"))
4467 else if (
Matches(
"DROP",
"ACCESS",
"METHOD"))
4471 else if (
Matches(
"DROP",
"EVENT"))
4473 else if (
Matches(
"DROP",
"EVENT",
"TRIGGER"))
4477 else if (
Matches(
"DROP",
"POLICY"))
4492 else if (
Matches(
"DROP",
"PROPERTY"))
4494 else if (
Matches(
"DROP",
"PROPERTY",
"GRAPH"))
4509 else if (
Matches(
"DROP",
"TRANSFORM"))
4511 else if (
Matches(
"DROP",
"TRANSFORM",
"FOR"))
4532 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4533 "MERGE INTO",
"EXECUTE",
"ANALYZE",
"VERBOSE");
4543 COMPLETE_WITH(
"ANALYZE",
"VERBOSE",
"COSTS",
"SETTINGS",
"GENERIC_PLAN",
4544 "BUFFERS",
"SERIALIZE",
"WAL",
"TIMING",
"SUMMARY",
4545 "MEMORY",
"IO",
"FORMAT");
4546 else if (
TailMatches(
"ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY|MEMORY|IO"))
4553 else if (
Matches(
"EXPLAIN",
"ANALYZE"))
4554 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4555 "MERGE INTO",
"EXECUTE",
"VERBOSE");
4556 else if (
Matches(
"EXPLAIN",
"(*)") ||
4557 Matches(
"EXPLAIN",
"VERBOSE") ||
4558 Matches(
"EXPLAIN",
"ANALYZE",
"VERBOSE"))
4559 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4560 "MERGE INTO",
"EXECUTE");
4568 else if (
Matches(
"FETCH|MOVE"))
4586 else if (
Matches(
"FETCH|MOVE",
"BACKWARD|FORWARD"))
4597 else if (
Matches(
"FETCH|MOVE",
"ABSOLUTE|BACKWARD|FORWARD|RELATIVE",
4599 Matches(
"FETCH|MOVE",
"ALL|NEXT|PRIOR|FIRST|LAST"))
4609 else if (
TailMatches(
"FOREIGN",
"DATA",
"WRAPPER") &&
4631 TailMatches(
"REVOKE",
"ADMIN|GRANT|INHERIT|SET",
"OPTION",
"FOR"))
4637 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4642 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4643 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL");
4646 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4647 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL",
4648 "GRANT OPTION FOR");
4658 "INHERIT OPTION FOR",
4660 else if (
TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR"))
4662 else if (
TailMatches(
"REVOKE",
"ADMIN|INHERIT|SET",
"OPTION",
"FOR"))
4667 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER"))
4673 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"SET") ||
4675 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER",
"SYSTEM"))
4701 if (
TailMatches(
"SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|MAINTAIN|ALL"))
4723 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4724 COMPLETE_WITH(
"TABLES",
"SEQUENCES",
"FUNCTIONS",
"PROCEDURES",
"ROUTINES",
"TYPES",
"SCHEMAS",
"LARGE OBJECTS");
4727 "ALL FUNCTIONS IN SCHEMA",
4728 "ALL PROCEDURES IN SCHEMA",
4729 "ALL ROUTINES IN SCHEMA",
4730 "ALL SEQUENCES IN SCHEMA",
4731 "ALL TABLES IN SCHEMA",
4734 "FOREIGN DATA WRAPPER",
4752 "PROCEDURES IN SCHEMA",
4753 "ROUTINES IN SCHEMA",
4754 "SEQUENCES IN SCHEMA",
4755 "TABLES IN SCHEMA");
4778 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4819 "WITH GRANT OPTION",
4852 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
MatchAny,
"ON",
"ALL",
MatchAny,
"IN",
"SCHEMA",
MatchAny))
4915 else if (
Matches(
"IMPORT",
"FOREIGN"))
4931 else if (
TailMatches(
"NOT",
"MATCHED",
"THEN",
"INSERT"))
4948 COMPLETE_WITH(
"(",
"DEFAULT VALUES",
"SELECT",
"TABLE",
"VALUES",
"OVERRIDING");
4975 else if (
Matches(
"LOCK",
"TABLE"))
4978 else if (
Matches(
"LOCK",
"TABLE",
"ONLY") ||
Matches(
"LOCK",
"ONLY"))
4992 "ROW SHARE MODE",
"ROW EXCLUSIVE MODE",
4993 "SHARE UPDATE EXCLUSIVE MODE",
"SHARE MODE",
4994 "SHARE ROW EXCLUSIVE MODE",
4995 "EXCLUSIVE MODE",
"ACCESS EXCLUSIVE MODE");
5007 "UPDATE EXCLUSIVE MODE");
5084 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE|TARGET"))
5092 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY"))
5099 else if (
TailMatches(
"WHEN",
"MATCHED",
"THEN") ||
5100 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE",
"THEN"))
5106 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"THEN") ||
5107 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"TARGET",
"THEN"))
5131 COMPLETE_WITH(
"SELECT",
"UPDATE",
"INSERT INTO",
"DELETE FROM",
5132 "MERGE INTO",
"VALUES",
"WITH",
"TABLE");
5142 else if (
Matches(
"REASSIGN",
"OWNED"))
5144 else if (
Matches(
"REASSIGN",
"OWNED",
"BY"))
5154 else if (
Matches(
"REFRESH",
"MATERIALIZED"))
5156 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW"))
5159 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY"))
5163 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny))
5165 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH"))
5167 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH"))
5169 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH",
"NO"))
5171 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH",
"NO"))
5175 else if (
Matches(
"REINDEX") ||
5177 COMPLETE_WITH(
"TABLE",
"INDEX",
"SYSTEM",
"SCHEMA",
"DATABASE");
5178 else if (
Matches(
"REINDEX",
"TABLE") ||
5179 Matches(
"REINDEX",
"(*)",
"TABLE"))
5182 else if (
Matches(
"REINDEX",
"INDEX") ||
5183 Matches(
"REINDEX",
"(*)",
"INDEX"))
5186 else if (
Matches(
"REINDEX",
"SCHEMA") ||
5187 Matches(
"REINDEX",
"(*)",
"SCHEMA"))
5190 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE") ||
5191 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE"))
5194 else if (
Matches(
"REINDEX",
"TABLE",
"CONCURRENTLY") ||
5195 Matches(
"REINDEX",
"(*)",
"TABLE",
"CONCURRENTLY"))
5197 else if (
Matches(
"REINDEX",
"INDEX",
"CONCURRENTLY") ||
5198 Matches(
"REINDEX",
"(*)",
"INDEX",
"CONCURRENTLY"))
5200 else if (
Matches(
"REINDEX",
"SCHEMA",
"CONCURRENTLY") ||
5201 Matches(
"REINDEX",
"(*)",
"SCHEMA",
"CONCURRENTLY"))
5203 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE",
"CONCURRENTLY") ||
5204 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE",
"CONCURRENTLY"))
5223 "(",
"USING INDEX");
5224 else if (
Matches(
"REPACK",
"(*)"))
5257 else if (
TailMatches(
"ANALYZE|CONCURRENTLY|VERBOSE"))
5264 else if (
Matches(
"SECURITY",
"LABEL"))
5268 else if (
Matches(
"SECURITY",
"LABEL",
"ON") ||
5270 COMPLETE_WITH(
"TABLE",
"COLUMN",
"AGGREGATE",
"DATABASE",
"DOMAIN",
5271 "EVENT TRIGGER",
"FOREIGN TABLE",
"FUNCTION",
5272 "LARGE OBJECT",
"MATERIALIZED VIEW",
"LANGUAGE",
5273 "PROPERTY GRAPH",
"PUBLICATION",
"PROCEDURE",
"ROLE",
"ROUTINE",
"SCHEMA",
5274 "SEQUENCE",
"SUBSCRIPTION",
"TABLESPACE",
"TYPE",
"VIEW");
5275 else if (
Matches(
"SECURITY",
"LABEL",
"ON",
"PROPERTY",
"GRAPH"))
5297 "SESSION AUTHORIZATION",
5299 else if (
Matches(
"SHOW",
"SESSION"))
5302 else if (
Matches(
"SET",
"TRANSACTION"))
5303 COMPLETE_WITH(
"SNAPSHOT",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5304 else if (
Matches(
"BEGIN|START",
"TRANSACTION") ||
5307 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION"))
5308 COMPLETE_WITH(
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5309 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"NOT") ||
5311 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"NOT"))
5313 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION") ||
5314 Matches(
"BEGIN",
"ISOLATION") ||
5315 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION"))
5317 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL") ||
5318 Matches(
"BEGIN",
"ISOLATION",
"LEVEL") ||
5319 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL"))
5321 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"READ") ||
5322 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"READ") ||
5323 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"READ"))
5325 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5326 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5327 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"REPEATABLE"))
5329 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"READ") ||
5331 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"READ"))
5334 else if (
Matches(
"SET",
"CONSTRAINTS"))
5341 else if (
Matches(
"SET",
"ROLE"))
5344 else if (
Matches(
"SET",
"SESSION"))
5345 COMPLETE_WITH(
"AUTHORIZATION",
"CHARACTERISTICS AS TRANSACTION");
5347 else if (
Matches(
"SET",
"SESSION",
"AUTHORIZATION"))
5351 else if (
Matches(
"RESET",
"SESSION"))
5374 "YMD",
"DMY",
"MDY",
5375 "US",
"European",
"NonEuropean",
5381 " AND nspname NOT LIKE E'pg\\\\_toast%%'"
5382 " AND nspname NOT LIKE E'pg\\\\_temp%%'",
5407 "1",
"0",
"DEFAULT");
5434 else if (
Matches(
"TRUNCATE",
"TABLE"))
5442 COMPLETE_WITH(
"RESTART IDENTITY",
"CONTINUE IDENTITY",
"CASCADE",
"RESTRICT");
5477 else if (
Matches(
"ALTER|CREATE|DROP",
"USER",
"MAPPING"))
5479 else if (
Matches(
"CREATE",
"USER",
"MAPPING",
"FOR"))
5485 else if (
Matches(
"ALTER|DROP",
"USER",
"MAPPING",
"FOR"))
5487 else if (
Matches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING",
"FOR",
MatchAny))
5514 "DISABLE_PAGE_SKIPPING",
"SKIP_LOCKED",
5515 "INDEX_CLEANUP",
"PROCESS_MAIN",
"PROCESS_TOAST",
5516 "TRUNCATE",
"PARALLEL",
"SKIP_DATABASE_STATS",
5517 "ONLY_DATABASE_STATS",
"BUFFER_USAGE_LIMIT");
5518 else if (
TailMatches(
"FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|PROCESS_MAIN|PROCESS_TOAST|TRUNCATE|SKIP_DATABASE_STATS|ONLY_DATABASE_STATS"))
5523 else if (
Matches(
"VACUUM",
"(*)"))
5526 else if (
Matches(
"VACUUM",
"FULL"))
5561 else if (
Matches(
"WAIT",
"FOR"))
5563 else if (
Matches(
"WAIT",
"FOR",
"LSN"))
5587 COMPLETE_WITH(
"'standby_replay'",
"'standby_write'",
"'standby_flush'",
"'primary_flush'");
5761 else if (
TailMatches(
"CREATE|ALTER|DROP",
"EVENT"))
5763 else if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN"))
5767 else if (
TailMatches(
"CREATE|ALTER|DROP",
"MATERIALIZED"))
5769 else if (
TailMatches(
"CREATE|ALTER|DROP",
"PROPERTY"))
5771 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT"))
5773 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER"))
5778 if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN",
"DATA"))
5780 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT",
"SEARCH"))
5781 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
5782 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING"))
5791 "display_false",
"display_true",
"expanded",
5792 "fieldsep",
"fieldsep_zero",
"footer",
"format",
5793 "linestyle",
"null",
"numericlocale",
5794 "pager",
"pager_min_lines",
5795 "recordsep",
"recordsep_zero",
5796 "tableattr",
"title",
"tuples_only",
5797 "unicode_border_linestyle",
5798 "unicode_column_linestyle",
5799 "unicode_header_linestyle",
5805 "latex-longtable",
"troff-ms",
"unaligned",
5814 "unicode_column_linestyle|"
5815 "unicode_header_linestyle"))
5824 if (
TailMatchesCS(
"AUTOCOMMIT|ON_ERROR_STOP|QUIET|SHOW_ALL_RESULTS|"
5825 "SINGLELINE|SINGLESTEP"))
5829 "preserve-lower",
"preserve-upper");
5836 "ignoreboth",
"none");
5848 else if (
TailMatchesCS(
"\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|"
5849 "\\ir|\\include_relative|\\o|\\out|"
5850 "\\s|\\w|\\write|\\lo_import") ||
5882 static int list_index,
6034 static int list_index,
6120 "%s, NULL::pg_catalog.text FROM %s",
6125 ", pg_catalog.pg_namespace nr");
6143 " AND %s = nr.oid AND nr.nspname = '%s'",
6160 "pg_catalog.pg_class c") == 0 &&
6164 " AND c.relnamespace <> (SELECT oid FROM"
6165 " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')");
6175 "SELECT NULL::pg_catalog.text, n.nspname "
6176 "FROM pg_catalog.pg_namespace n "
6177 "WHERE n.nspname LIKE '%s'",
6186 " AND n.nspname NOT LIKE E'pg\\\\_%'");
6203 "FROM %s, pg_catalog.pg_namespace n",
6208 ", pg_catalog.pg_namespace nr");
6226 " AND %s = nr.oid AND nr.nspname = '%s'",
6269 const char *item =
NULL;
6322 const char *item = *
itemp++;
6340 const char *item = *
itemp++;
6405 static int string_length,
6509 int *
maxvars,
const char *varname,
6510 const char *prefix,
const char *suffix)
6518 (*varnames)[(*nvars)++] =
psprintf(
"%s%s%s", prefix, varname, suffix);
6550 varnames[nvars] =
NULL;
6553 for (
i = 0;
i < nvars;
i++)
6572 static int list_index;
6630#ifdef USE_FILENAME_QUOTING_FUNCTIONS
6647#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
6704 if (*ret ==
'\'' &&
is_dir)
6732 unsigned char first =
ref[0];
6741 for (p = ret; *p; p++)
6746 for (p = ret; *p; p++)
6787 char *
bptr = buffer;
6901 if (
ch >=
'A' &&
ch <=
'Z')
6911 *schemaname =
sname;
6941 buflen +=
strlen(schemaname) + 1;
6947 for (
const char *p = schemaname; *p; p++)
6975 for (
const char *p = schemaname; *p; p++)
7060 pg_log_error(
"tab completion query failed: %s\nQuery was:\n%s",
7221 "SELECT vartype FROM pg_catalog.pg_settings "
7222 "WHERE pg_catalog.lower(name) = pg_catalog.lower('%s')",
7237#ifdef USE_FILENAME_QUOTING_FUNCTIONS
7286#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
7321 strcpy(workspace + 1, fname);
bool recognized_connection_string(const char *connstr)
#define IS_HIGHBIT_SET(ch)
#define Assert(condition)
memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets))
const uint8 ScanKeywordCategories[SCANKEYWORDS_NUM_KEYWORDS]
ConnStatusType PQstatus(const PGconn *conn)
char * PQerrorMessage(const PGconn *conn)
size_t PQescapeStringConn(PGconn *conn, char *to, const char *from, size_t length, int *error)
PGresult * PQexec(PGconn *conn, const char *query)
int PQmblenBounded(const char *s, int encoding)
void * pg_malloc(size_t size)
char * pg_strdup(const char *in)
#define pg_realloc_array(pointer, type, count)
#define pg_malloc_array(type, count)
static const JsonPathKeyword keywords[]
PGDLLIMPORT const ScanKeywordList ScanKeywords
#define UNRESERVED_KEYWORD
int ScanKeywordLookup(const char *str, const ScanKeywordList *keywords)
#define pg_log_error(...)
char * pnstrdup(const char *in, Size len)
static char buf[DEFAULT_XLOG_SEG_SIZE]
int pg_strcasecmp(const char *s1, const char *s2)
unsigned char pg_toupper(unsigned char ch)
unsigned char pg_tolower(unsigned char ch)
int pg_strncasecmp(const char *s1, const char *s2, size_t n)
void initPQExpBuffer(PQExpBuffer str)
void appendPQExpBuffer(PQExpBuffer str, const char *fmt,...)
void appendPQExpBufferStr(PQExpBuffer str, const char *data)
void termPQExpBuffer(PQExpBuffer str)
char * psprintf(const char *fmt,...)
static void word(struct vars *v, int dir, struct state *lp, struct state *rp)
@ PSQL_COMP_CASE_PRESERVE_LOWER
@ PSQL_COMP_CASE_PRESERVE_UPPER
char * strtokx(const char *s, const char *whitespace, const char *delim, const char *quote, char escape, bool e_strings, bool del_quotes, int encoding)
char * quote_if_needed(const char *source, const char *entails_quote, char quote, char escape, bool force_quote, int encoding)
void initialize_readline(void)
PQExpBuffer tab_completion_query_buf
static bool escape_string(PGconn *conn, PQExpBuffer target, const char *unescaped, size_t unescaped_len, PQExpBuffer escape_err)
static int32 text_length(Datum str)
int pg_encoding_max_length(int encoding)
#define send(s, buf, len, flags)