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')"
1212#define Query_for_list_of_publications \
1214" FROM pg_catalog.pg_publication "\
1215" WHERE pubname LIKE '%s'"
1217#define Query_for_list_of_subscriptions \
1219" FROM pg_catalog.pg_subscription s, pg_catalog.pg_database d"\
1220" WHERE s.subname LIKE '%s' "\
1221" AND d.datname = pg_catalog.current_database() "\
1222" AND s.subdbid = d.oid"
1225#define Privilege_options_of_grant_and_revoke \
1226"SELECT", "INSERT", "UPDATE", "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER", \
1227"CREATE", "CONNECT", "TEMPORARY", "EXECUTE", "USAGE", "SET", "ALTER SYSTEM", \
1231#define Alter_procedure_options \
1232"DEPENDS ON EXTENSION", "EXTERNAL SECURITY", "NO DEPENDS ON EXTENSION", \
1233"OWNER TO", "RENAME TO", "RESET", "SECURITY", "SET"
1236#define Alter_routine_options \
1237Alter_procedure_options, "COST", "IMMUTABLE", "LEAKPROOF", "NOT LEAKPROOF", \
1238"PARALLEL", "ROWS", "STABLE", "VOLATILE"
1241#define Alter_function_options \
1242Alter_routine_options, "CALLED ON NULL INPUT", "RETURNS NULL ON NULL INPUT", \
1246#define Copy_common_options \
1247"DELIMITER", "ENCODING", "ESCAPE", "FORMAT", "HEADER", "NULL", "QUOTE"
1250#define Copy_from_options \
1251Copy_common_options, "DEFAULT", "FORCE_NOT_NULL", "FORCE_NULL", "FREEZE", \
1252"LOG_VERBOSITY", "ON_ERROR", "REJECT_LIMIT"
1255#define Copy_to_options \
1256Copy_common_options, "FORCE_QUOTE", "FORCE_ARRAY"
1260 "ABORT",
"ALTER",
"ANALYZE",
"BEGIN",
"CALL",
"CHECKPOINT",
"CLOSE",
"CLUSTER",
1261 "COMMENT",
"COMMIT",
"COPY",
"CREATE",
"DEALLOCATE",
"DECLARE",
1262 "DELETE FROM",
"DISCARD",
"DO",
"DROP",
"END",
"EXECUTE",
"EXPLAIN",
1263 "FETCH",
"GRANT",
"IMPORT FOREIGN SCHEMA",
"INSERT INTO",
"LISTEN",
"LOAD",
"LOCK",
1264 "MERGE INTO",
"MOVE",
"NOTIFY",
"PREPARE",
1265 "REASSIGN",
"REFRESH MATERIALIZED VIEW",
"REINDEX",
"RELEASE",
"REPACK",
1266 "RESET",
"REVOKE",
"ROLLBACK",
1267 "SAVEPOINT",
"SECURITY LABEL",
"SELECT",
"SET",
"SHOW",
"START",
1268 "TABLE",
"TRUNCATE",
"UNLISTEN",
"UPDATE",
"VACUUM",
"VALUES",
1289#define THING_NO_CREATE (1 << 0)
1290#define THING_NO_DROP (1 << 1)
1291#define THING_NO_ALTER (1 << 2)
1292#define THING_NO_SHOW (THING_NO_CREATE | THING_NO_DROP | THING_NO_ALTER)
1312 {
"CONVERSION",
"SELECT conname FROM pg_catalog.pg_conversion WHERE conname LIKE '%s'"},
1338 {
"RULE",
"SELECT rulename FROM pg_catalog.pg_rules WHERE rulename LIKE '%s'"},
1354 {
"TRIGGER",
"SELECT tgname FROM pg_catalog.pg_trigger WHERE tgname LIKE '%s' AND NOT tgisinternal"},
1384#define MatchAny NULL
1385#define MatchAnyExcept(pattern) ("!" pattern)
1394 const char *
const *words;
1398#define TCPAT(id, kind, ...) \
1399 { (id), (kind), VA_ARGS_NARGS(__VA_ARGS__), \
1400 (const char * const []) { __VA_ARGS__ } }
1402#ifdef SWITCH_CONVERSION_APPLIED
1413 "autovacuum_analyze_scale_factor",
1414 "autovacuum_analyze_threshold",
1415 "autovacuum_enabled",
1416 "autovacuum_freeze_max_age",
1417 "autovacuum_freeze_min_age",
1418 "autovacuum_freeze_table_age",
1419 "autovacuum_multixact_freeze_max_age",
1420 "autovacuum_multixact_freeze_min_age",
1421 "autovacuum_multixact_freeze_table_age",
1422 "autovacuum_parallel_workers",
1423 "autovacuum_vacuum_cost_delay",
1424 "autovacuum_vacuum_cost_limit",
1425 "autovacuum_vacuum_insert_scale_factor",
1426 "autovacuum_vacuum_insert_threshold",
1427 "autovacuum_vacuum_max_threshold",
1428 "autovacuum_vacuum_scale_factor",
1429 "autovacuum_vacuum_threshold",
1431 "log_autovacuum_min_duration",
1432 "log_autoanalyze_min_duration",
1434 "toast.autovacuum_enabled",
1435 "toast.autovacuum_freeze_max_age",
1436 "toast.autovacuum_freeze_min_age",
1437 "toast.autovacuum_freeze_table_age",
1438 "toast.autovacuum_multixact_freeze_max_age",
1439 "toast.autovacuum_multixact_freeze_min_age",
1440 "toast.autovacuum_multixact_freeze_table_age",
1441 "toast.autovacuum_vacuum_cost_delay",
1442 "toast.autovacuum_vacuum_cost_limit",
1443 "toast.autovacuum_vacuum_insert_scale_factor",
1444 "toast.autovacuum_vacuum_insert_threshold",
1445 "toast.autovacuum_vacuum_max_threshold",
1446 "toast.autovacuum_vacuum_scale_factor",
1447 "toast.autovacuum_vacuum_threshold",
1448 "toast.log_autovacuum_min_duration",
1449 "toast.vacuum_index_cleanup",
1450 "toast.vacuum_max_eager_freeze_failure_rate",
1451 "toast.vacuum_truncate",
1452 "toast_tuple_target",
1453 "user_catalog_table",
1454 "vacuum_index_cleanup",
1455 "vacuum_max_eager_freeze_failure_rate",
1491 int *
maxvars,
const char *varname,
1492 const char *prefix,
const char *suffix);
1494 const char *prefix,
const char *suffix,
bool need_value);
1513#ifdef USE_FILENAME_QUOTING_FUNCTIONS
1528#ifdef USE_FILENAME_QUOTING_FUNCTIONS
1550#ifdef HAVE_RL_FILENAME_QUOTE_CHARACTERS
1554 for (
int i = 0;
i < 255;
i++)
1555 fqc[
i] = (
unsigned char) (
i + 1);
1587 bool case_sensitive)
1591#define cimatch(s1, s2, n) \
1592 (case_sensitive ? strncmp(s1, s2, n) == 0 : pg_strncasecmp(s1, s2, n) == 0)
1595 if (pattern ==
NULL)
1599 if (*pattern ==
'!')
1611 while (*
c !=
'\0' && *
c !=
'|')
1632 if (wordlen == (
c - pattern) &&
1656 int narg,
const char *
const *args)
1706 int narg,
const char *
const *args)
1759 int narg,
const char *
const *args)
1843 size_t length =
strlen(s);
1845 return (length > 0 && s[length - 1] ==
c);
1878#define prev_wd (previous_words[0])
1879#define prev2_wd (previous_words[1])
1880#define prev3_wd (previous_words[2])
1881#define prev4_wd (previous_words[3])
1882#define prev5_wd (previous_words[4])
1883#define prev6_wd (previous_words[5])
1884#define prev7_wd (previous_words[6])
1885#define prev8_wd (previous_words[7])
1886#define prev9_wd (previous_words[8])
1889#define TailMatches(...) \
1890 TailMatchesImpl(false, previous_words_count, previous_words, \
1891 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1894#define TailMatchesCS(...) \
1895 TailMatchesImpl(true, previous_words_count, previous_words, \
1896 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1899#define Matches(...) \
1900 MatchesImpl(false, previous_words_count, previous_words, \
1901 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1904#define MatchesCS(...) \
1905 MatchesImpl(true, previous_words_count, previous_words, \
1906 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1909#define HeadMatches(...) \
1910 HeadMatchesImpl(false, previous_words_count, previous_words, \
1911 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1914#define HeadMatchesCS(...) \
1915 HeadMatchesImpl(true, previous_words_count, previous_words, \
1916 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1921 "\\bind",
"\\bind_named",
1922 "\\connect",
"\\conninfo",
"\\C",
"\\cd",
"\\close_prepared",
"\\copy",
1923 "\\copyright",
"\\crosstabview",
1924 "\\d",
"\\da",
"\\dA",
"\\dAc",
"\\dAf",
"\\dAo",
"\\dAp",
1925 "\\db",
"\\dc",
"\\dconfig",
"\\dC",
"\\dd",
"\\ddp",
"\\dD",
1926 "\\des",
"\\det",
"\\deu",
"\\dew",
"\\dE",
"\\df",
1927 "\\dF",
"\\dFd",
"\\dFp",
"\\dFt",
"\\dg",
"\\di",
"\\dl",
"\\dL",
1928 "\\dm",
"\\dn",
"\\do",
"\\dO",
"\\dp",
"\\dP",
"\\dPi",
"\\dPt",
1929 "\\drds",
"\\drg",
"\\dRs",
"\\dRp",
"\\ds",
1930 "\\dt",
"\\dT",
"\\dv",
"\\du",
"\\dx",
"\\dX",
"\\dy",
1931 "\\echo",
"\\edit",
"\\ef",
"\\elif",
"\\else",
"\\encoding",
1932 "\\endif",
"\\endpipeline",
"\\errverbose",
"\\ev",
1933 "\\f",
"\\flush",
"\\flushrequest",
1934 "\\g",
"\\gdesc",
"\\getenv",
"\\getresults",
"\\gexec",
"\\gset",
"\\gx",
1936 "\\if",
"\\include",
"\\include_relative",
"\\ir",
1937 "\\list",
"\\lo_import",
"\\lo_export",
"\\lo_list",
"\\lo_unlink",
1939 "\\parse",
"\\password",
"\\print",
"\\prompt",
"\\pset",
1940 "\\qecho",
"\\quit",
1941 "\\reset",
"\\restrict",
1942 "\\s",
"\\sendpipeline",
"\\set",
"\\setenv",
"\\sf",
1943 "\\startpipeline",
"\\sv",
"\\syncpipeline",
1944 "\\t",
"\\T",
"\\timing",
1945 "\\unrestrict",
"\\unset",
1947 "\\warn",
"\\watch",
"\\write",
1985 if (
text[0] ==
'\\')
1989 else if (
text[0] ==
':' &&
text[1] !=
':')
1991 if (
text[1] ==
'\'')
1993 else if (
text[1] ==
'"')
1995 else if (
text[1] ==
'{' &&
text[2] ==
'?')
2008#ifdef SWITCH_CONVERSION_APPLIED
2026 switch (
tcpat->kind)
2101 else if (
wac->vquery)
2104 else if (
wac->squery)
2122#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
2201 COMPLETE_WITH(
"AGGREGATE",
"COLLATION",
"DOMAIN",
"FUNCTION",
2202 "INDEX",
"OPERATOR",
"PROCEDURE",
"SEQUENCE",
"TABLE",
2203 "TEXT SEARCH CONFIGURATION",
"TEXT SEARCH DICTIONARY",
2204 "TEXT SEARCH PARSER",
"TEXT SEARCH TEMPLATE",
2205 "TRIGGER",
"TYPE",
"VIEW",
2207 "UNIQUE",
"UNLOGGED");
2213 COMPLETE_WITH(
"FUNCTION",
"PROCEDURE",
"LANGUAGE",
"RULE",
"VIEW",
2214 "AGGREGATE",
"TRANSFORM",
"TRIGGER");
2224 else if (
Matches(
"ALTER",
"TABLE"))
2226 "ALL IN TABLESPACE");
2241 else if (
Matches(
"ALTER",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
2293 COMPLETE_WITH(
"ADD",
"DROP",
"OWNER TO",
"RENAME TO",
"SET");
2297 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"ADD|SET",
"TABLE"))
2324 COMPLETE_WITH(
"(",
"ALL SEQUENCES",
"ALL TABLES",
"TABLES IN SCHEMA",
"TABLE");
2327 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES"))
2329 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT"))
2331 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"("))
2334 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
2336 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
2338 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
2340 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"ADD|DROP|SET",
"TABLES",
"IN",
"SCHEMA"))
2342 " AND nspname NOT LIKE E'pg\\\\_%%'",
2346 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
2349 COMPLETE_WITH(
"CONNECTION",
"ENABLE",
"DISABLE",
"OWNER TO",
2350 "RENAME TO",
"REFRESH PUBLICATION",
"REFRESH SEQUENCES",
2351 "SERVER",
"SET",
"SKIP (",
"ADD PUBLICATION",
"DROP PUBLICATION");
2365 COMPLETE_WITH(
"binary",
"conflict_log_destination",
"disable_on_error",
2366 "failover",
"max_retention_duration",
"origin",
2367 "password_required",
"retain_dead_tuples",
2368 "run_as_owner",
"slot_name",
"streaming",
2369 "synchronous_commit",
"two_phase",
2370 "wal_receiver_timeout");
2381 "ADD|DROP|SET",
"PUBLICATION",
MatchAny))
2385 "ADD|DROP|SET",
"PUBLICATION",
MatchAny,
"WITH",
"("))
2394 COMPLETE_WITH(
"OWNER TO",
"REFRESH VERSION",
"RENAME TO",
"SET SCHEMA");
2402 COMPLETE_WITH(
"RESET",
"SET",
"OWNER TO",
"REFRESH COLLATION VERSION",
"RENAME TO",
2403 "IS_TEMPLATE",
"ALLOW_CONNECTIONS",
2404 "CONNECTION LIMIT");
2418 else if (
Matches(
"ALTER",
"EVENT",
"TRIGGER"))
2423 COMPLETE_WITH(
"DISABLE",
"ENABLE",
"OWNER TO",
"RENAME TO");
2435 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
2436 "CONVERSION",
"DOMAIN",
"EVENT TRIGGER",
"FOREIGN",
2437 "FUNCTION",
"MATERIALIZED VIEW",
"OPERATOR",
2438 "LANGUAGE",
"PROCEDURE",
"ROUTINE",
"SCHEMA",
2439 "SEQUENCE",
"SERVER",
"TABLE",
"TEXT SEARCH",
2440 "TRANSFORM FOR",
"TYPE",
"VIEW");
2443 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"FOREIGN"))
2447 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"OPERATOR"))
2451 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"TEXT",
"SEARCH"))
2452 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
2466 else if (
Matches(
"ALTER",
"FOREIGN"))
2472 "OPTIONS",
"OWNER TO",
"RENAME TO",
"VALIDATOR");
2473 else if (
Matches(
"ALTER",
"FOREIGN",
"DATA",
"WRAPPER",
MatchAny,
"NO"))
2478 COMPLETE_WITH(
"ADD",
"ALTER",
"DISABLE TRIGGER",
"DROP",
"ENABLE",
2479 "INHERIT",
"NO INHERIT",
"OPTIONS",
"OWNER TO",
2480 "RENAME",
"SET",
"VALIDATE CONSTRAINT");
2483 else if (
Matches(
"ALTER",
"INDEX"))
2485 "ALL IN TABLESPACE");
2488 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME TO",
"SET",
2489 "RESET",
"ATTACH PARTITION",
2490 "DEPENDS ON EXTENSION",
"NO DEPENDS ON EXTENSION");
2524 "deduplicate_items",
2525 "fastupdate",
"gin_pending_list_limit",
2527 "pages_per_range",
"autosummarize"
2531 "deduplicate_items =",
2532 "fastupdate =",
"gin_pending_list_limit =",
2534 "pages_per_range =",
"autosummarize ="
2550 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW"))
2552 "ALL IN TABLESPACE");
2557 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2558 "ENCRYPTED PASSWORD",
"IN",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2559 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2560 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2561 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2562 "VALID UNTIL",
"WITH");
2586 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2587 "ENCRYPTED PASSWORD",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2588 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2589 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2590 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2594 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
2597 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR"))
2600 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN"))
2603 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2607 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2611 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2616 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2618 Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2624 "VALIDATE CONSTRAINT");
2635 else if (
Matches(
"ALTER",
"DOMAIN",
MatchAny,
"DROP|RENAME|VALIDATE",
"CONSTRAINT"))
2652 COMPLETE_WITH(
"AS",
"INCREMENT",
"MINVALUE",
"MAXVALUE",
"RESTART",
2653 "START",
"NO",
"CACHE",
"CYCLE",
"SET",
"OWNED BY",
2654 "OWNER TO",
"RENAME TO");
2666 COMPLETE_WITH(
"VERSION",
"OPTIONS",
"OWNER TO",
"RENAME TO");
2671 else if (
Matches(
"ALTER",
"SYSTEM"))
2673 else if (
Matches(
"ALTER",
"SYSTEM",
"SET|RESET"))
2680 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME",
"RESET",
"SET");
2684 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2707 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"check_option",
"="))
2709 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"security_barrier|security_invoker",
"="))
2714 COMPLETE_WITH(
"ALTER COLUMN",
"CLUSTER ON",
"DEPENDS ON EXTENSION",
2715 "NO DEPENDS ON EXTENSION",
"OWNER TO",
"RENAME",
2718 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"RENAME"))
2720 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2730 COMPLETE_WITH(
"(",
"ACCESS METHOD",
"SCHEMA",
"TABLESPACE",
"WITHOUT CLUSTER");
2732 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
2736 else if (
Matches(
"ALTER",
"POLICY"))
2749 COMPLETE_WITH(
"RENAME TO",
"TO",
"USING (",
"WITH CHECK (");
2762 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH"))
2765 COMPLETE_WITH(
"ADD",
"ALTER",
"DROP",
"OWNER TO",
"RENAME TO",
"SET SCHEMA");
2766 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|ALTER|DROP"))
2768 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|DROP",
"VERTEX|EDGE"))
2772 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ALTER",
"VERTEX|EDGE"))
2792 COMPLETE_WITH(
"OWNER TO",
"RENAME TO",
"SET SCHEMA",
"SET STATISTICS");
2810 "NO DEPENDS ON EXTENSION");
2816 COMPLETE_WITH(
"ADD",
"ALTER",
"CLUSTER ON",
"DISABLE",
"DROP",
2817 "ENABLE",
"INHERIT",
"NO",
"RENAME",
"RESET",
2818 "OWNER TO",
"SET",
"VALIDATE CONSTRAINT",
2819 "REPLICA IDENTITY",
"ATTACH PARTITION",
2820 "DETACH PARTITION",
"FORCE ROW LEVEL SECURITY",
2821 "SPLIT PARTITION",
"MERGE PARTITIONS (",
2829 COMPLETE_WITH(
"COLUMN",
"CONSTRAINT",
"CHECK (",
"NOT NULL",
"UNIQUE",
2830 "PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2838 COMPLETE_WITH(
"CHECK (",
"NOT NULL",
"UNIQUE",
"PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2845 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY") ||
2851 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY",
"USING",
"INDEX"))
2857 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"UNIQUE",
"USING",
"INDEX"))
2864 "PRIMARY",
"KEY",
"USING",
"INDEX"))
2871 "UNIQUE",
"USING",
"INDEX"))
2878 COMPLETE_WITH(
"ALWAYS",
"REPLICA",
"ROW LEVEL SECURITY",
"RULE",
2880 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ENABLE",
"REPLICA|ALWAYS"))
2932 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2950 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|DROP|RENAME",
"CONSTRAINT"))
2956 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"VALIDATE",
"CONSTRAINT"))
2964 COMPLETE_WITH(
"TYPE",
"SET",
"RESET",
"RESTART",
"ADD",
"DROP");
2982 COMPLETE_WITH(
"(",
"COMPRESSION",
"DATA TYPE",
"DEFAULT",
"EXPRESSION",
"GENERATED",
"NOT NULL",
2983 "STATISTICS",
"STORAGE",
2985 "INCREMENT",
"MINVALUE",
"MAXVALUE",
"START",
"NO",
"CACHE",
"CYCLE");
3013 COMPLETE_WITH(
"DEFAULT",
"PLAIN",
"EXTERNAL",
"EXTENDED",
"MAIN");
3023 COMPLETE_WITH(
"DEFAULT",
"EXPRESSION",
"IDENTITY",
"NOT NULL");
3034 "TABLESPACE",
"UNLOGGED",
"WITH",
"WITHOUT");
3040 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
3059 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING",
"INDEX"))
3064 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING"))
3087 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"DETACH|SPLIT",
"PARTITION"))
3100 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"("))
3105 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"(*)"))
3121 "effective_io_concurrency",
"maintenance_io_concurrency");
3124 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH"))
3125 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3126 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"TEMPLATE|PARSER",
MatchAny))
3130 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"CONFIGURATION",
MatchAny))
3133 "OWNER TO",
"RENAME TO",
"SET SCHEMA");
3137 COMPLETE_WITH(
"ADD ATTRIBUTE",
"ADD VALUE",
"ALTER ATTRIBUTE",
3139 "OWNER TO",
"RENAME",
"SET SCHEMA",
"SET (");
3157 else if (
Matches(
"ALTER",
"TYPE",
MatchAny,
"ALTER|DROP|RENAME",
"ATTRIBUTE"))
3182 COMPLETE_WITH(
"ANALYZE",
"RECEIVE",
"SEND",
"STORAGE",
"SUBSCRIPT",
3183 "TYPMOD_IN",
"TYPMOD_OUT");
3201 "(",
"VERBOSE",
"ONLY");
3202 else if (
Matches(
"ANALYZE",
"VERBOSE"))
3214 COMPLETE_WITH(
"VERBOSE",
"SKIP_LOCKED",
"BUFFER_USAGE_LIMIT");
3218 else if (
Matches(
"ANALYZE",
"(*)"))
3229 COMPLETE_WITH(
"WORK",
"TRANSACTION",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
3231 else if (
Matches(
"END|ABORT"))
3241 COMPLETE_WITH(
"AND",
"WORK",
"TRANSACTION",
"TO SAVEPOINT",
"PREPARED");
3242 else if (
Matches(
"ABORT|END|COMMIT|ROLLBACK",
"AND"))
3250 else if (
Matches(
"CHECKPOINT"))
3275 else if (
Matches(
"CLUSTER",
"VERBOSE") ||
3306 else if (
Matches(
"COMMENT",
"ON"))
3307 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
3308 "COLUMN",
"CONSTRAINT",
"CONVERSION",
"DATABASE",
3309 "DOMAIN",
"EXTENSION",
"EVENT TRIGGER",
3310 "FOREIGN DATA WRAPPER",
"FOREIGN TABLE",
3311 "FUNCTION",
"INDEX",
"LANGUAGE",
"LARGE OBJECT",
3312 "MATERIALIZED VIEW",
"OPERATOR",
"POLICY",
3313 "PROCEDURE",
"PROCEDURAL LANGUAGE",
"PROPERTY GRAPH",
"PUBLICATION",
"ROLE",
3314 "ROUTINE",
"RULE",
"SCHEMA",
"SEQUENCE",
"SERVER",
3315 "STATISTICS",
"SUBSCRIPTION",
"TABLE",
3316 "TABLESPACE",
"TEXT SEARCH",
"TRANSFORM FOR",
3317 "TRIGGER",
"TYPE",
"VIEW");
3318 else if (
Matches(
"COMMENT",
"ON",
"ACCESS",
"METHOD"))
3320 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT"))
3330 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT",
MatchAny,
"ON",
"DOMAIN"))
3332 else if (
Matches(
"COMMENT",
"ON",
"EVENT",
"TRIGGER"))
3334 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN"))
3336 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN",
"TABLE"))
3338 else if (
Matches(
"COMMENT",
"ON",
"MATERIALIZED",
"VIEW"))
3340 else if (
Matches(
"COMMENT",
"ON",
"POLICY"))
3349 else if (
Matches(
"COMMENT",
"ON",
"PROCEDURAL",
"LANGUAGE"))
3351 else if (
Matches(
"COMMENT",
"ON",
"PROPERTY",
"GRAPH"))
3360 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH"))
3361 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3362 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"CONFIGURATION"))
3364 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"DICTIONARY"))
3366 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"PARSER"))
3368 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"TEMPLATE"))
3370 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR"))
3374 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3398 else if (
Matches(
"COPY|\\copy"))
3401 else if (
Matches(
"COPY|\\copy",
"("))
3402 COMPLETE_WITH(
"SELECT",
"TABLE",
"VALUES",
"INSERT INTO",
"UPDATE",
"DELETE FROM",
"MERGE INTO",
"WITH");
3512 "PROVIDER =",
"DETERMINISTIC =");
3521 COMPLETE_WITH(
"OWNER",
"TEMPLATE",
"ENCODING",
"TABLESPACE",
3522 "IS_TEMPLATE",
"STRATEGY",
3523 "ALLOW_CONNECTIONS",
"CONNECTION LIMIT",
3524 "LC_COLLATE",
"LC_CTYPE",
"LOCALE",
"OID",
3525 "LOCALE_PROVIDER",
"ICU_LOCALE");
3539 "NOT NULL",
"NULL",
"CHECK (");
3545 else if (
Matches(
"CREATE",
"EXTENSION"))
3558 else if (
Matches(
"CREATE",
"FOREIGN"))
3563 COMPLETE_WITH(
"CONNECTION",
"HANDLER",
"OPTIONS",
"VALIDATOR");
3580 "ON",
"CONCURRENTLY");
3594 else if (
TailMatches(
"CREATE|UNIQUE",
"INDEX",
"CONCURRENTLY"))
3626 else if (
Matches(
"CREATE",
"OR"))
3638 COMPLETE_WITH(
"AS",
"FOR",
"TO",
"USING (",
"WITH CHECK (");
3651 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3674 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3713 else if (
Matches(
"CREATE",
"PROPERTY"))
3717 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE"))
3719 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES"))
3721 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"("))
3723 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"(*)"))
3734 COMPLETE_WITH(
"FOR TABLE",
"FOR TABLES IN SCHEMA",
"FOR ALL TABLES",
"FOR ALL SEQUENCES",
"WITH (");
3736 COMPLETE_WITH(
"TABLE",
"TABLES IN SCHEMA",
"ALL TABLES",
"ALL SEQUENCES");
3739 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES"))
3741 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT"))
3743 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"("))
3745 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
3747 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
3749 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
3773 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"TABLES",
"IN",
"SCHEMA"))
3775 " AND nspname NOT LIKE E'pg\\\\_%%'",
3781 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
3801 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE"))
3804 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE",
"TO"))
3808 else if (
Matches(
"CREATE",
"SCHEMA"))
3811 else if (
Matches(
"CREATE",
"SCHEMA",
"AUTHORIZATION") ||
3824 COMPLETE_WITH(
"AS",
"INCREMENT BY",
"MINVALUE",
"MAXVALUE",
"NO",
3825 "CACHE",
"CYCLE",
"OWNED BY",
"START WITH");
3876 COMPLETE_WITH(
"EXECUTE",
"SELECT",
"TABLE",
"VALUES",
"WITH");
3879 COMPLETE_WITH(
"AS",
"INHERITS (",
"PARTITION BY",
"USING",
"TABLESPACE",
"WITH (");
3881 COMPLETE_WITH(
"AS",
"INHERITS (",
"USING",
"TABLESPACE",
"WITH (");
3883 COMPLETE_WITH(
"AS",
"INHERITS (",
"ON COMMIT",
"PARTITION BY",
"USING",
3884 "TABLESPACE",
"WITH (");
3894 else if (
TailMatches(
"CREATE",
"TEMP|TEMPORARY",
"TABLE",
MatchAny,
"(*)",
"ON",
"COMMIT"))
3906 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3907 else if (
TailMatches(
"CREATE",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
3911 else if (
Matches(
"CREATE",
"TRANSFORM") ||
3912 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM"))
3914 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR") ||
3915 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR"))
3920 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE") ||
3921 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3950 COMPLETE_WITH(
"binary",
"conflict_log_destination",
"connect",
"copy_data",
3951 "create_slot",
"disable_on_error",
"enabled",
"failover",
3952 "max_retention_duration",
"origin",
3953 "password_required",
"retain_dead_tuples",
3954 "run_as_owner",
"slot_name",
"streaming",
3955 "synchronous_commit",
"two_phase",
3956 "wal_receiver_timeout");
4013 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4016 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4023 "INITIALLY",
"IMMEDIATE|DEFERRED") ||
4025 "INITIALLY",
"IMMEDIATE|DEFERRED"))
4028 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4030 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4038 "OLD|NEW",
"TABLE") ||
4040 "OLD|NEW",
"TABLE"))
4043 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4045 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4047 "REFERENCING",
"OLD",
"TABLE",
MatchAny) ||
4049 "REFERENCING",
"OLD",
"TABLE",
MatchAny))
4052 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4054 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4057 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4059 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4061 "REFERENCING",
"NEW",
"TABLE",
MatchAny) ||
4063 "REFERENCING",
"NEW",
"TABLE",
MatchAny))
4066 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4068 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4071 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4073 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4075 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4077 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4079 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4081 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4083 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4085 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny))
4103 "FOR",
"EACH",
"ROW|STATEMENT") ||
4105 "FOR",
"EACH",
"ROW|STATEMENT") ||
4107 "FOR",
"ROW|STATEMENT") ||
4109 "FOR",
"ROW|STATEMENT"))
4142 "EXECUTE",
"FUNCTION|PROCEDURE") ||
4144 "EXECUTE",
"FUNCTION|PROCEDURE"))
4150 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4151 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4152 "LOGIN",
"NOBYPASSRLS",
4153 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4154 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4155 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4156 "VALID UNTIL",
"WITH");
4161 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4162 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4163 "LOGIN",
"NOBYPASSRLS",
4164 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4165 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4166 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4191 "TYPMOD_IN",
"TYPMOD_OUT",
"ANALYZE",
"SUBSCRIPT",
4192 "INTERNALLENGTH",
"PASSEDBYVALUE",
"ALIGNMENT",
4193 "STORAGE",
"LIKE",
"CATEGORY",
"PREFERRED",
4194 "DEFAULT",
"ELEMENT",
"DELIMITER",
4205 "CANONICAL",
"SUBTYPE_DIFF",
4206 "MULTIRANGE_TYPE_NAME");
4233 TailMatches(
"CREATE",
"OR",
"REPLACE",
"VIEW",
MatchAny,
"WITH",
"(",
"check_option",
"="))
4245 else if (
Matches(
"CREATE",
"MATERIALIZED"))
4255 else if (
Matches(
"CREATE",
"MATERIALIZED",
"VIEW",
MatchAny,
"USING"))
4270 else if (
Matches(
"CREATE",
"EVENT"))
4277 COMPLETE_WITH(
"ddl_command_start",
"ddl_command_end",
"login",
4278 "sql_drop",
"table_rewrite");
4299 else if (
Matches(
"CREATE",
"EVENT",
"TRIGGER",
MatchAnyN,
"EXECUTE",
"FUNCTION|PROCEDURE"))
4303 else if (
Matches(
"DEALLOCATE"))
4314 COMPLETE_WITH(
"BINARY",
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
4325 COMPLETE_WITH(
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
"CURSOR");
4384 "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|PUBLICATION|SCHEMA|SEQUENCE|SERVER|SUBSCRIPTION|STATISTICS|TABLE|TYPE|VIEW",
4390 Matches(
"DROP",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
4397 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
4399 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny,
"("))
4401 else if (
Matches(
"DROP",
"FOREIGN"))
4409 else if (
Matches(
"DROP",
"INDEX"))
4412 else if (
Matches(
"DROP",
"INDEX",
"CONCURRENTLY"))
4420 else if (
Matches(
"DROP",
"MATERIALIZED"))
4422 else if (
Matches(
"DROP",
"MATERIALIZED",
"VIEW"))
4428 else if (
Matches(
"DROP",
"OWNED"))
4430 else if (
Matches(
"DROP",
"OWNED",
"BY"))
4436 else if (
Matches(
"DROP",
"TEXT",
"SEARCH"))
4437 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
4451 else if (
Matches(
"DROP",
"ACCESS"))
4453 else if (
Matches(
"DROP",
"ACCESS",
"METHOD"))
4457 else if (
Matches(
"DROP",
"EVENT"))
4459 else if (
Matches(
"DROP",
"EVENT",
"TRIGGER"))
4463 else if (
Matches(
"DROP",
"POLICY"))
4478 else if (
Matches(
"DROP",
"PROPERTY"))
4480 else if (
Matches(
"DROP",
"PROPERTY",
"GRAPH"))
4495 else if (
Matches(
"DROP",
"TRANSFORM"))
4497 else if (
Matches(
"DROP",
"TRANSFORM",
"FOR"))
4518 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4519 "MERGE INTO",
"EXECUTE",
"ANALYZE",
"VERBOSE");
4529 COMPLETE_WITH(
"ANALYZE",
"VERBOSE",
"COSTS",
"SETTINGS",
"GENERIC_PLAN",
4530 "BUFFERS",
"SERIALIZE",
"WAL",
"TIMING",
"SUMMARY",
4531 "MEMORY",
"IO",
"FORMAT");
4532 else if (
TailMatches(
"ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY|MEMORY|IO"))
4539 else if (
Matches(
"EXPLAIN",
"ANALYZE"))
4540 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4541 "MERGE INTO",
"EXECUTE",
"VERBOSE");
4542 else if (
Matches(
"EXPLAIN",
"(*)") ||
4543 Matches(
"EXPLAIN",
"VERBOSE") ||
4544 Matches(
"EXPLAIN",
"ANALYZE",
"VERBOSE"))
4545 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4546 "MERGE INTO",
"EXECUTE");
4554 else if (
Matches(
"FETCH|MOVE"))
4572 else if (
Matches(
"FETCH|MOVE",
"BACKWARD|FORWARD"))
4583 else if (
Matches(
"FETCH|MOVE",
"ABSOLUTE|BACKWARD|FORWARD|RELATIVE",
4585 Matches(
"FETCH|MOVE",
"ALL|NEXT|PRIOR|FIRST|LAST"))
4595 else if (
TailMatches(
"FOREIGN",
"DATA",
"WRAPPER") &&
4617 TailMatches(
"REVOKE",
"ADMIN|GRANT|INHERIT|SET",
"OPTION",
"FOR"))
4623 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4628 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4629 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL");
4632 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4633 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL",
4634 "GRANT OPTION FOR");
4644 "INHERIT OPTION FOR",
4646 else if (
TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR"))
4648 else if (
TailMatches(
"REVOKE",
"ADMIN|INHERIT|SET",
"OPTION",
"FOR"))
4653 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER"))
4659 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"SET") ||
4661 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER",
"SYSTEM"))
4687 if (
TailMatches(
"SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|MAINTAIN|ALL"))
4709 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4710 COMPLETE_WITH(
"TABLES",
"SEQUENCES",
"FUNCTIONS",
"PROCEDURES",
"ROUTINES",
"TYPES",
"SCHEMAS",
"LARGE OBJECTS");
4713 "ALL FUNCTIONS IN SCHEMA",
4714 "ALL PROCEDURES IN SCHEMA",
4715 "ALL ROUTINES IN SCHEMA",
4716 "ALL SEQUENCES IN SCHEMA",
4717 "ALL TABLES IN SCHEMA",
4720 "FOREIGN DATA WRAPPER",
4738 "PROCEDURES IN SCHEMA",
4739 "ROUTINES IN SCHEMA",
4740 "SEQUENCES IN SCHEMA",
4741 "TABLES IN SCHEMA");
4764 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4805 "WITH GRANT OPTION",
4838 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
MatchAny,
"ON",
"ALL",
MatchAny,
"IN",
"SCHEMA",
MatchAny))
4901 else if (
Matches(
"IMPORT",
"FOREIGN"))
4917 else if (
TailMatches(
"NOT",
"MATCHED",
"THEN",
"INSERT"))
4934 COMPLETE_WITH(
"(",
"DEFAULT VALUES",
"SELECT",
"TABLE",
"VALUES",
"OVERRIDING");
4961 else if (
Matches(
"LOCK",
"TABLE"))
4964 else if (
Matches(
"LOCK",
"TABLE",
"ONLY") ||
Matches(
"LOCK",
"ONLY"))
4978 "ROW SHARE MODE",
"ROW EXCLUSIVE MODE",
4979 "SHARE UPDATE EXCLUSIVE MODE",
"SHARE MODE",
4980 "SHARE ROW EXCLUSIVE MODE",
4981 "EXCLUSIVE MODE",
"ACCESS EXCLUSIVE MODE");
4993 "UPDATE EXCLUSIVE MODE");
5070 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE|TARGET"))
5078 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY"))
5085 else if (
TailMatches(
"WHEN",
"MATCHED",
"THEN") ||
5086 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE",
"THEN"))
5092 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"THEN") ||
5093 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"TARGET",
"THEN"))
5117 COMPLETE_WITH(
"SELECT",
"UPDATE",
"INSERT INTO",
"DELETE FROM",
5118 "MERGE INTO",
"VALUES",
"WITH",
"TABLE");
5128 else if (
Matches(
"REASSIGN",
"OWNED"))
5130 else if (
Matches(
"REASSIGN",
"OWNED",
"BY"))
5140 else if (
Matches(
"REFRESH",
"MATERIALIZED"))
5142 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW"))
5145 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY"))
5149 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny))
5151 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH"))
5153 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH"))
5155 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH",
"NO"))
5157 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH",
"NO"))
5161 else if (
Matches(
"REINDEX") ||
5163 COMPLETE_WITH(
"TABLE",
"INDEX",
"SYSTEM",
"SCHEMA",
"DATABASE");
5164 else if (
Matches(
"REINDEX",
"TABLE") ||
5165 Matches(
"REINDEX",
"(*)",
"TABLE"))
5168 else if (
Matches(
"REINDEX",
"INDEX") ||
5169 Matches(
"REINDEX",
"(*)",
"INDEX"))
5172 else if (
Matches(
"REINDEX",
"SCHEMA") ||
5173 Matches(
"REINDEX",
"(*)",
"SCHEMA"))
5176 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE") ||
5177 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE"))
5180 else if (
Matches(
"REINDEX",
"TABLE",
"CONCURRENTLY") ||
5181 Matches(
"REINDEX",
"(*)",
"TABLE",
"CONCURRENTLY"))
5183 else if (
Matches(
"REINDEX",
"INDEX",
"CONCURRENTLY") ||
5184 Matches(
"REINDEX",
"(*)",
"INDEX",
"CONCURRENTLY"))
5186 else if (
Matches(
"REINDEX",
"SCHEMA",
"CONCURRENTLY") ||
5187 Matches(
"REINDEX",
"(*)",
"SCHEMA",
"CONCURRENTLY"))
5189 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE",
"CONCURRENTLY") ||
5190 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE",
"CONCURRENTLY"))
5209 "(",
"USING INDEX");
5210 else if (
Matches(
"REPACK",
"(*)"))
5243 else if (
TailMatches(
"ANALYZE|CONCURRENTLY|VERBOSE"))
5250 else if (
Matches(
"SECURITY",
"LABEL"))
5254 else if (
Matches(
"SECURITY",
"LABEL",
"ON") ||
5256 COMPLETE_WITH(
"TABLE",
"COLUMN",
"AGGREGATE",
"DATABASE",
"DOMAIN",
5257 "EVENT TRIGGER",
"FOREIGN TABLE",
"FUNCTION",
5258 "LARGE OBJECT",
"MATERIALIZED VIEW",
"LANGUAGE",
5259 "PUBLICATION",
"PROCEDURE",
"ROLE",
"ROUTINE",
"SCHEMA",
5260 "SEQUENCE",
"SUBSCRIPTION",
"TABLESPACE",
"TYPE",
"VIEW");
5281 "SESSION AUTHORIZATION",
5283 else if (
Matches(
"SHOW",
"SESSION"))
5286 else if (
Matches(
"SET",
"TRANSACTION"))
5287 COMPLETE_WITH(
"SNAPSHOT",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5288 else if (
Matches(
"BEGIN|START",
"TRANSACTION") ||
5291 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION"))
5292 COMPLETE_WITH(
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5293 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"NOT") ||
5295 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"NOT"))
5297 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION") ||
5298 Matches(
"BEGIN",
"ISOLATION") ||
5299 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION"))
5301 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL") ||
5302 Matches(
"BEGIN",
"ISOLATION",
"LEVEL") ||
5303 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL"))
5305 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"READ") ||
5306 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"READ") ||
5307 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"READ"))
5309 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5310 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5311 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"REPEATABLE"))
5313 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"READ") ||
5315 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"READ"))
5318 else if (
Matches(
"SET",
"CONSTRAINTS"))
5325 else if (
Matches(
"SET",
"ROLE"))
5328 else if (
Matches(
"SET",
"SESSION"))
5329 COMPLETE_WITH(
"AUTHORIZATION",
"CHARACTERISTICS AS TRANSACTION");
5331 else if (
Matches(
"SET",
"SESSION",
"AUTHORIZATION"))
5335 else if (
Matches(
"RESET",
"SESSION"))
5358 "YMD",
"DMY",
"MDY",
5359 "US",
"European",
"NonEuropean",
5365 " AND nspname NOT LIKE E'pg\\\\_toast%%'"
5366 " AND nspname NOT LIKE E'pg\\\\_temp%%'",
5391 "1",
"0",
"DEFAULT");
5418 else if (
Matches(
"TRUNCATE",
"TABLE"))
5426 COMPLETE_WITH(
"RESTART IDENTITY",
"CONTINUE IDENTITY",
"CASCADE",
"RESTRICT");
5461 else if (
Matches(
"ALTER|CREATE|DROP",
"USER",
"MAPPING"))
5463 else if (
Matches(
"CREATE",
"USER",
"MAPPING",
"FOR"))
5469 else if (
Matches(
"ALTER|DROP",
"USER",
"MAPPING",
"FOR"))
5471 else if (
Matches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING",
"FOR",
MatchAny))
5498 "DISABLE_PAGE_SKIPPING",
"SKIP_LOCKED",
5499 "INDEX_CLEANUP",
"PROCESS_MAIN",
"PROCESS_TOAST",
5500 "TRUNCATE",
"PARALLEL",
"SKIP_DATABASE_STATS",
5501 "ONLY_DATABASE_STATS",
"BUFFER_USAGE_LIMIT");
5502 else if (
TailMatches(
"FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|PROCESS_MAIN|PROCESS_TOAST|TRUNCATE|SKIP_DATABASE_STATS|ONLY_DATABASE_STATS"))
5507 else if (
Matches(
"VACUUM",
"(*)"))
5510 else if (
Matches(
"VACUUM",
"FULL"))
5545 else if (
Matches(
"WAIT",
"FOR"))
5547 else if (
Matches(
"WAIT",
"FOR",
"LSN"))
5571 COMPLETE_WITH(
"'standby_replay'",
"'standby_write'",
"'standby_flush'",
"'primary_flush'");
5745 else if (
TailMatches(
"CREATE|ALTER|DROP",
"EVENT"))
5747 else if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN"))
5751 else if (
TailMatches(
"CREATE|ALTER|DROP",
"MATERIALIZED"))
5753 else if (
TailMatches(
"CREATE|ALTER|DROP",
"PROPERTY"))
5755 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT"))
5757 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER"))
5762 if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN",
"DATA"))
5764 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT",
"SEARCH"))
5765 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
5766 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING"))
5775 "display_false",
"display_true",
"expanded",
5776 "fieldsep",
"fieldsep_zero",
"footer",
"format",
5777 "linestyle",
"null",
"numericlocale",
5778 "pager",
"pager_min_lines",
5779 "recordsep",
"recordsep_zero",
5780 "tableattr",
"title",
"tuples_only",
5781 "unicode_border_linestyle",
5782 "unicode_column_linestyle",
5783 "unicode_header_linestyle",
5789 "latex-longtable",
"troff-ms",
"unaligned",
5798 "unicode_column_linestyle|"
5799 "unicode_header_linestyle"))
5808 if (
TailMatchesCS(
"AUTOCOMMIT|ON_ERROR_STOP|QUIET|SHOW_ALL_RESULTS|"
5809 "SINGLELINE|SINGLESTEP"))
5813 "preserve-lower",
"preserve-upper");
5820 "ignoreboth",
"none");
5832 else if (
TailMatchesCS(
"\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|"
5833 "\\ir|\\include_relative|\\o|\\out|"
5834 "\\s|\\w|\\write|\\lo_import") ||
5866 static int list_index,
6018 static int list_index,
6104 "%s, NULL::pg_catalog.text FROM %s",
6109 ", pg_catalog.pg_namespace nr");
6127 " AND %s = nr.oid AND nr.nspname = '%s'",
6144 "pg_catalog.pg_class c") == 0 &&
6148 " AND c.relnamespace <> (SELECT oid FROM"
6149 " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')");
6159 "SELECT NULL::pg_catalog.text, n.nspname "
6160 "FROM pg_catalog.pg_namespace n "
6161 "WHERE n.nspname LIKE '%s'",
6170 " AND n.nspname NOT LIKE E'pg\\\\_%'");
6187 "FROM %s, pg_catalog.pg_namespace n",
6192 ", pg_catalog.pg_namespace nr");
6210 " AND %s = nr.oid AND nr.nspname = '%s'",
6253 const char *item =
NULL;
6306 const char *item = *
itemp++;
6324 const char *item = *
itemp++;
6389 static int string_length,
6493 int *
maxvars,
const char *varname,
6494 const char *prefix,
const char *suffix)
6502 (*varnames)[(*nvars)++] =
psprintf(
"%s%s%s", prefix, varname, suffix);
6534 varnames[nvars] =
NULL;
6537 for (
i = 0;
i < nvars;
i++)
6556 static int list_index;
6614#ifdef USE_FILENAME_QUOTING_FUNCTIONS
6631#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
6688 if (*ret ==
'\'' &&
is_dir)
6716 unsigned char first =
ref[0];
6725 for (p = ret; *p; p++)
6730 for (p = ret; *p; p++)
6771 char *
bptr = buffer;
6885 if (
ch >=
'A' &&
ch <=
'Z')
6895 *schemaname =
sname;
6925 buflen +=
strlen(schemaname) + 1;
6931 for (
const char *p = schemaname; *p; p++)
6959 for (
const char *p = schemaname; *p; p++)
7044 pg_log_error(
"tab completion query failed: %s\nQuery was:\n%s",
7205 "SELECT vartype FROM pg_catalog.pg_settings "
7206 "WHERE pg_catalog.lower(name) = pg_catalog.lower('%s')",
7221#ifdef USE_FILENAME_QUOTING_FUNCTIONS
7270#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
7305 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(...)
void pfree(void *pointer)
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)