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");
2394 "ADD|DROP|SET",
"PUBLICATION",
MatchAny))
2398 "ADD|DROP|SET",
"PUBLICATION",
MatchAny,
"WITH",
"("))
2407 COMPLETE_WITH(
"OWNER TO",
"REFRESH VERSION",
"RENAME TO",
"SET SCHEMA");
2415 COMPLETE_WITH(
"RESET",
"SET",
"OWNER TO",
"REFRESH COLLATION VERSION",
"RENAME TO",
2416 "IS_TEMPLATE",
"ALLOW_CONNECTIONS",
2417 "CONNECTION LIMIT");
2431 else if (
Matches(
"ALTER",
"EVENT",
"TRIGGER"))
2436 COMPLETE_WITH(
"DISABLE",
"ENABLE",
"OWNER TO",
"RENAME TO");
2448 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
2449 "CONVERSION",
"DOMAIN",
"EVENT TRIGGER",
"FOREIGN",
2450 "FUNCTION",
"MATERIALIZED VIEW",
"OPERATOR",
2451 "LANGUAGE",
"PROCEDURE",
"ROUTINE",
"SCHEMA",
2452 "SEQUENCE",
"SERVER",
"TABLE",
"TEXT SEARCH",
2453 "TRANSFORM FOR",
"TYPE",
"VIEW");
2456 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"FOREIGN"))
2460 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"OPERATOR"))
2464 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"TEXT",
"SEARCH"))
2465 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
2479 else if (
Matches(
"ALTER",
"FOREIGN"))
2485 "OPTIONS",
"OWNER TO",
"RENAME TO",
"VALIDATOR");
2486 else if (
Matches(
"ALTER",
"FOREIGN",
"DATA",
"WRAPPER",
MatchAny,
"NO"))
2491 COMPLETE_WITH(
"ADD",
"ALTER",
"DISABLE TRIGGER",
"DROP",
"ENABLE",
2492 "INHERIT",
"NO INHERIT",
"OPTIONS",
"OWNER TO",
2493 "RENAME",
"SET",
"VALIDATE CONSTRAINT");
2496 else if (
Matches(
"ALTER",
"INDEX"))
2498 "ALL IN TABLESPACE");
2501 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME TO",
"SET",
2502 "RESET",
"ATTACH PARTITION",
2503 "DEPENDS ON EXTENSION",
"NO DEPENDS ON EXTENSION");
2537 "deduplicate_items",
2538 "fastupdate",
"gin_pending_list_limit",
2540 "pages_per_range",
"autosummarize"
2544 "deduplicate_items =",
2545 "fastupdate =",
"gin_pending_list_limit =",
2547 "pages_per_range =",
"autosummarize ="
2563 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW"))
2565 "ALL IN TABLESPACE");
2570 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2571 "ENCRYPTED PASSWORD",
"IN",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2572 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2573 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2574 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2575 "VALID UNTIL",
"WITH");
2599 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2600 "ENCRYPTED PASSWORD",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2601 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2602 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2603 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2607 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
2610 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR"))
2613 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN"))
2616 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2620 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2624 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2629 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2631 Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2637 "VALIDATE CONSTRAINT");
2648 else if (
Matches(
"ALTER",
"DOMAIN",
MatchAny,
"DROP|RENAME|VALIDATE",
"CONSTRAINT"))
2665 COMPLETE_WITH(
"AS",
"INCREMENT",
"MINVALUE",
"MAXVALUE",
"RESTART",
2666 "START",
"NO",
"CACHE",
"CYCLE",
"SET",
"OWNED BY",
2667 "OWNER TO",
"RENAME TO");
2679 COMPLETE_WITH(
"VERSION",
"OPTIONS",
"OWNER TO",
"RENAME TO");
2684 else if (
Matches(
"ALTER",
"SYSTEM"))
2686 else if (
Matches(
"ALTER",
"SYSTEM",
"SET|RESET"))
2693 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME",
"RESET",
"SET");
2697 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2720 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"check_option",
"="))
2722 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"security_barrier|security_invoker",
"="))
2727 COMPLETE_WITH(
"ALTER COLUMN",
"CLUSTER ON",
"DEPENDS ON EXTENSION",
2728 "NO DEPENDS ON EXTENSION",
"OWNER TO",
"RENAME",
2731 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"RENAME"))
2733 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2743 COMPLETE_WITH(
"(",
"ACCESS METHOD",
"SCHEMA",
"TABLESPACE",
"WITHOUT CLUSTER");
2745 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
2749 else if (
Matches(
"ALTER",
"POLICY"))
2762 COMPLETE_WITH(
"RENAME TO",
"TO",
"USING (",
"WITH CHECK (");
2775 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH"))
2778 COMPLETE_WITH(
"ADD",
"ALTER",
"DROP",
"OWNER TO",
"RENAME TO",
"SET SCHEMA");
2779 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|ALTER|DROP"))
2781 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|DROP",
"VERTEX|EDGE"))
2785 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ALTER",
"VERTEX|EDGE"))
2805 COMPLETE_WITH(
"OWNER TO",
"RENAME TO",
"SET SCHEMA",
"SET STATISTICS");
2823 "NO DEPENDS ON EXTENSION");
2829 COMPLETE_WITH(
"ADD",
"ALTER",
"CLUSTER ON",
"DISABLE",
"DROP",
2830 "ENABLE",
"INHERIT",
"NO",
"RENAME",
"RESET",
2831 "OWNER TO",
"SET",
"VALIDATE CONSTRAINT",
2832 "REPLICA IDENTITY",
"ATTACH PARTITION",
2833 "DETACH PARTITION",
"FORCE ROW LEVEL SECURITY",
2834 "SPLIT PARTITION",
"MERGE PARTITIONS (",
2842 COMPLETE_WITH(
"COLUMN",
"CONSTRAINT",
"CHECK (",
"NOT NULL",
"UNIQUE",
2843 "PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2851 COMPLETE_WITH(
"CHECK (",
"NOT NULL",
"UNIQUE",
"PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2858 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY") ||
2864 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY",
"USING",
"INDEX"))
2870 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"UNIQUE",
"USING",
"INDEX"))
2877 "PRIMARY",
"KEY",
"USING",
"INDEX"))
2884 "UNIQUE",
"USING",
"INDEX"))
2891 COMPLETE_WITH(
"ALWAYS",
"REPLICA",
"ROW LEVEL SECURITY",
"RULE",
2893 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ENABLE",
"REPLICA|ALWAYS"))
2945 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2963 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|DROP|RENAME",
"CONSTRAINT"))
2969 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"VALIDATE",
"CONSTRAINT"))
2977 COMPLETE_WITH(
"TYPE",
"SET",
"RESET",
"RESTART",
"ADD",
"DROP");
2995 COMPLETE_WITH(
"(",
"COMPRESSION",
"DATA TYPE",
"DEFAULT",
"EXPRESSION",
"GENERATED",
"NOT NULL",
2996 "STATISTICS",
"STORAGE",
2998 "INCREMENT",
"MINVALUE",
"MAXVALUE",
"START",
"NO",
"CACHE",
"CYCLE");
3026 COMPLETE_WITH(
"DEFAULT",
"PLAIN",
"EXTERNAL",
"EXTENDED",
"MAIN");
3036 COMPLETE_WITH(
"DEFAULT",
"EXPRESSION",
"IDENTITY",
"NOT NULL");
3047 "TABLESPACE",
"UNLOGGED",
"WITH",
"WITHOUT");
3053 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
3072 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING",
"INDEX"))
3077 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING"))
3100 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"DETACH|SPLIT",
"PARTITION"))
3113 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"("))
3118 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"(*)"))
3134 "effective_io_concurrency",
"maintenance_io_concurrency");
3137 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH"))
3138 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3139 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"TEMPLATE|PARSER",
MatchAny))
3143 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"CONFIGURATION",
MatchAny))
3146 "OWNER TO",
"RENAME TO",
"SET SCHEMA");
3150 COMPLETE_WITH(
"ADD ATTRIBUTE",
"ADD VALUE",
"ALTER ATTRIBUTE",
3152 "OWNER TO",
"RENAME",
"SET SCHEMA",
"SET (");
3170 else if (
Matches(
"ALTER",
"TYPE",
MatchAny,
"ALTER|DROP|RENAME",
"ATTRIBUTE"))
3195 COMPLETE_WITH(
"ANALYZE",
"RECEIVE",
"SEND",
"STORAGE",
"SUBSCRIPT",
3196 "TYPMOD_IN",
"TYPMOD_OUT");
3214 "(",
"VERBOSE",
"ONLY");
3215 else if (
Matches(
"ANALYZE",
"VERBOSE"))
3227 COMPLETE_WITH(
"VERBOSE",
"SKIP_LOCKED",
"BUFFER_USAGE_LIMIT");
3231 else if (
Matches(
"ANALYZE",
"(*)"))
3242 COMPLETE_WITH(
"WORK",
"TRANSACTION",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
3244 else if (
Matches(
"END|ABORT"))
3254 COMPLETE_WITH(
"AND",
"WORK",
"TRANSACTION",
"TO SAVEPOINT",
"PREPARED");
3255 else if (
Matches(
"ABORT|END|COMMIT|ROLLBACK",
"AND"))
3263 else if (
Matches(
"CHECKPOINT"))
3288 else if (
Matches(
"CLUSTER",
"VERBOSE") ||
3319 else if (
Matches(
"COMMENT",
"ON"))
3320 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
3321 "COLUMN",
"CONSTRAINT",
"CONVERSION",
"DATABASE",
3322 "DOMAIN",
"EXTENSION",
"EVENT TRIGGER",
3323 "FOREIGN DATA WRAPPER",
"FOREIGN TABLE",
3324 "FUNCTION",
"INDEX",
"LANGUAGE",
"LARGE OBJECT",
3325 "MATERIALIZED VIEW",
"OPERATOR",
"POLICY",
3326 "PROCEDURE",
"PROCEDURAL LANGUAGE",
"PROPERTY GRAPH",
"PUBLICATION",
"ROLE",
3327 "ROUTINE",
"RULE",
"SCHEMA",
"SEQUENCE",
"SERVER",
3328 "STATISTICS",
"SUBSCRIPTION",
"TABLE",
3329 "TABLESPACE",
"TEXT SEARCH",
"TRANSFORM FOR",
3330 "TRIGGER",
"TYPE",
"VIEW");
3331 else if (
Matches(
"COMMENT",
"ON",
"ACCESS",
"METHOD"))
3333 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT"))
3343 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT",
MatchAny,
"ON",
"DOMAIN"))
3345 else if (
Matches(
"COMMENT",
"ON",
"EVENT",
"TRIGGER"))
3347 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN"))
3349 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN",
"TABLE"))
3351 else if (
Matches(
"COMMENT",
"ON",
"MATERIALIZED",
"VIEW"))
3353 else if (
Matches(
"COMMENT",
"ON",
"POLICY"))
3362 else if (
Matches(
"COMMENT",
"ON",
"PROCEDURAL",
"LANGUAGE"))
3364 else if (
Matches(
"COMMENT",
"ON",
"PROPERTY",
"GRAPH"))
3373 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH"))
3374 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3375 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"CONFIGURATION"))
3377 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"DICTIONARY"))
3379 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"PARSER"))
3381 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"TEMPLATE"))
3383 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR"))
3387 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3411 else if (
Matches(
"COPY|\\copy"))
3414 else if (
Matches(
"COPY|\\copy",
"("))
3415 COMPLETE_WITH(
"SELECT",
"TABLE",
"VALUES",
"INSERT INTO",
"UPDATE",
"DELETE FROM",
"MERGE INTO",
"WITH");
3525 "PROVIDER =",
"DETERMINISTIC =");
3534 COMPLETE_WITH(
"OWNER",
"TEMPLATE",
"ENCODING",
"TABLESPACE",
3535 "IS_TEMPLATE",
"STRATEGY",
3536 "ALLOW_CONNECTIONS",
"CONNECTION LIMIT",
3537 "LC_COLLATE",
"LC_CTYPE",
"LOCALE",
"OID",
3538 "LOCALE_PROVIDER",
"ICU_LOCALE");
3552 "NOT NULL",
"NULL",
"CHECK (");
3558 else if (
Matches(
"CREATE",
"EXTENSION"))
3571 else if (
Matches(
"CREATE",
"FOREIGN"))
3576 COMPLETE_WITH(
"CONNECTION",
"HANDLER",
"OPTIONS",
"VALIDATOR");
3593 "ON",
"CONCURRENTLY");
3607 else if (
TailMatches(
"CREATE|UNIQUE",
"INDEX",
"CONCURRENTLY"))
3639 else if (
Matches(
"CREATE",
"OR"))
3651 COMPLETE_WITH(
"AS",
"FOR",
"TO",
"USING (",
"WITH CHECK (");
3664 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3687 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3726 else if (
Matches(
"CREATE",
"PROPERTY"))
3730 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE"))
3732 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES"))
3734 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"("))
3736 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"(*)"))
3747 COMPLETE_WITH(
"FOR TABLE",
"FOR TABLES IN SCHEMA",
"FOR ALL TABLES",
"FOR ALL SEQUENCES",
"WITH (");
3749 COMPLETE_WITH(
"TABLE",
"TABLES IN SCHEMA",
"ALL TABLES",
"ALL SEQUENCES");
3752 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES"))
3754 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT"))
3756 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"("))
3758 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
3760 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
3762 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
3786 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"TABLES",
"IN",
"SCHEMA"))
3788 " AND nspname NOT LIKE E'pg\\\\_%%'",
3794 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
3814 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE"))
3817 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE",
"TO"))
3821 else if (
Matches(
"CREATE",
"SCHEMA"))
3824 else if (
Matches(
"CREATE",
"SCHEMA",
"AUTHORIZATION") ||
3837 COMPLETE_WITH(
"AS",
"INCREMENT BY",
"MINVALUE",
"MAXVALUE",
"NO",
3838 "CACHE",
"CYCLE",
"OWNED BY",
"START WITH");
3889 COMPLETE_WITH(
"EXECUTE",
"SELECT",
"TABLE",
"VALUES",
"WITH");
3892 COMPLETE_WITH(
"AS",
"INHERITS (",
"PARTITION BY",
"USING",
"TABLESPACE",
"WITH (");
3894 COMPLETE_WITH(
"AS",
"INHERITS (",
"USING",
"TABLESPACE",
"WITH (");
3896 COMPLETE_WITH(
"AS",
"INHERITS (",
"ON COMMIT",
"PARTITION BY",
"USING",
3897 "TABLESPACE",
"WITH (");
3907 else if (
TailMatches(
"CREATE",
"TEMP|TEMPORARY",
"TABLE",
MatchAny,
"(*)",
"ON",
"COMMIT"))
3919 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3920 else if (
TailMatches(
"CREATE",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
3924 else if (
Matches(
"CREATE",
"TRANSFORM") ||
3925 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM"))
3927 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR") ||
3928 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR"))
3933 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE") ||
3934 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3963 COMPLETE_WITH(
"binary",
"connect",
"copy_data",
"create_slot",
3964 "disable_on_error",
"enabled",
"failover",
3965 "max_retention_duration",
"origin",
3966 "password_required",
"retain_dead_tuples",
3967 "run_as_owner",
"slot_name",
"streaming",
3968 "synchronous_commit",
"two_phase");
4025 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4028 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4035 "INITIALLY",
"IMMEDIATE|DEFERRED") ||
4037 "INITIALLY",
"IMMEDIATE|DEFERRED"))
4040 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4042 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4050 "OLD|NEW",
"TABLE") ||
4052 "OLD|NEW",
"TABLE"))
4055 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4057 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4059 "REFERENCING",
"OLD",
"TABLE",
MatchAny) ||
4061 "REFERENCING",
"OLD",
"TABLE",
MatchAny))
4064 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4066 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4069 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4071 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4073 "REFERENCING",
"NEW",
"TABLE",
MatchAny) ||
4075 "REFERENCING",
"NEW",
"TABLE",
MatchAny))
4078 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4080 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4083 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4085 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4087 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4089 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4091 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4093 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4095 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4097 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny))
4115 "FOR",
"EACH",
"ROW|STATEMENT") ||
4117 "FOR",
"EACH",
"ROW|STATEMENT") ||
4119 "FOR",
"ROW|STATEMENT") ||
4121 "FOR",
"ROW|STATEMENT"))
4154 "EXECUTE",
"FUNCTION|PROCEDURE") ||
4156 "EXECUTE",
"FUNCTION|PROCEDURE"))
4162 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4163 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4164 "LOGIN",
"NOBYPASSRLS",
4165 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4166 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4167 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4168 "VALID UNTIL",
"WITH");
4173 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4174 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4175 "LOGIN",
"NOBYPASSRLS",
4176 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4177 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4178 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4203 "TYPMOD_IN",
"TYPMOD_OUT",
"ANALYZE",
"SUBSCRIPT",
4204 "INTERNALLENGTH",
"PASSEDBYVALUE",
"ALIGNMENT",
4205 "STORAGE",
"LIKE",
"CATEGORY",
"PREFERRED",
4206 "DEFAULT",
"ELEMENT",
"DELIMITER",
4217 "CANONICAL",
"SUBTYPE_DIFF",
4218 "MULTIRANGE_TYPE_NAME");
4245 TailMatches(
"CREATE",
"OR",
"REPLACE",
"VIEW",
MatchAny,
"WITH",
"(",
"check_option",
"="))
4257 else if (
Matches(
"CREATE",
"MATERIALIZED"))
4267 else if (
Matches(
"CREATE",
"MATERIALIZED",
"VIEW",
MatchAny,
"USING"))
4282 else if (
Matches(
"CREATE",
"EVENT"))
4289 COMPLETE_WITH(
"ddl_command_start",
"ddl_command_end",
"login",
4290 "sql_drop",
"table_rewrite");
4311 else if (
Matches(
"CREATE",
"EVENT",
"TRIGGER",
MatchAnyN,
"EXECUTE",
"FUNCTION|PROCEDURE"))
4315 else if (
Matches(
"DEALLOCATE"))
4326 COMPLETE_WITH(
"BINARY",
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
4337 COMPLETE_WITH(
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
"CURSOR");
4396 "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|PUBLICATION|SCHEMA|SEQUENCE|SERVER|SUBSCRIPTION|STATISTICS|TABLE|TYPE|VIEW",
4402 Matches(
"DROP",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
4409 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
4411 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny,
"("))
4413 else if (
Matches(
"DROP",
"FOREIGN"))
4421 else if (
Matches(
"DROP",
"INDEX"))
4424 else if (
Matches(
"DROP",
"INDEX",
"CONCURRENTLY"))
4432 else if (
Matches(
"DROP",
"MATERIALIZED"))
4434 else if (
Matches(
"DROP",
"MATERIALIZED",
"VIEW"))
4440 else if (
Matches(
"DROP",
"OWNED"))
4442 else if (
Matches(
"DROP",
"OWNED",
"BY"))
4448 else if (
Matches(
"DROP",
"TEXT",
"SEARCH"))
4449 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
4463 else if (
Matches(
"DROP",
"ACCESS"))
4465 else if (
Matches(
"DROP",
"ACCESS",
"METHOD"))
4469 else if (
Matches(
"DROP",
"EVENT"))
4471 else if (
Matches(
"DROP",
"EVENT",
"TRIGGER"))
4475 else if (
Matches(
"DROP",
"POLICY"))
4490 else if (
Matches(
"DROP",
"PROPERTY"))
4492 else if (
Matches(
"DROP",
"PROPERTY",
"GRAPH"))
4507 else if (
Matches(
"DROP",
"TRANSFORM"))
4509 else if (
Matches(
"DROP",
"TRANSFORM",
"FOR"))
4530 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4531 "MERGE INTO",
"EXECUTE",
"ANALYZE",
"VERBOSE");
4541 COMPLETE_WITH(
"ANALYZE",
"VERBOSE",
"COSTS",
"SETTINGS",
"GENERIC_PLAN",
4542 "BUFFERS",
"SERIALIZE",
"WAL",
"TIMING",
"SUMMARY",
4543 "MEMORY",
"IO",
"FORMAT");
4544 else if (
TailMatches(
"ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY|MEMORY|IO"))
4551 else if (
Matches(
"EXPLAIN",
"ANALYZE"))
4552 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4553 "MERGE INTO",
"EXECUTE",
"VERBOSE");
4554 else if (
Matches(
"EXPLAIN",
"(*)") ||
4555 Matches(
"EXPLAIN",
"VERBOSE") ||
4556 Matches(
"EXPLAIN",
"ANALYZE",
"VERBOSE"))
4557 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4558 "MERGE INTO",
"EXECUTE");
4566 else if (
Matches(
"FETCH|MOVE"))
4584 else if (
Matches(
"FETCH|MOVE",
"BACKWARD|FORWARD"))
4595 else if (
Matches(
"FETCH|MOVE",
"ABSOLUTE|BACKWARD|FORWARD|RELATIVE",
4597 Matches(
"FETCH|MOVE",
"ALL|NEXT|PRIOR|FIRST|LAST"))
4607 else if (
TailMatches(
"FOREIGN",
"DATA",
"WRAPPER") &&
4629 TailMatches(
"REVOKE",
"ADMIN|GRANT|INHERIT|SET",
"OPTION",
"FOR"))
4635 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4640 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4641 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL");
4644 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4645 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL",
4646 "GRANT OPTION FOR");
4656 "INHERIT OPTION FOR",
4658 else if (
TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR"))
4660 else if (
TailMatches(
"REVOKE",
"ADMIN|INHERIT|SET",
"OPTION",
"FOR"))
4665 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER"))
4671 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"SET") ||
4673 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER",
"SYSTEM"))
4699 if (
TailMatches(
"SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|MAINTAIN|ALL"))
4721 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4722 COMPLETE_WITH(
"TABLES",
"SEQUENCES",
"FUNCTIONS",
"PROCEDURES",
"ROUTINES",
"TYPES",
"SCHEMAS",
"LARGE OBJECTS");
4725 "ALL FUNCTIONS IN SCHEMA",
4726 "ALL PROCEDURES IN SCHEMA",
4727 "ALL ROUTINES IN SCHEMA",
4728 "ALL SEQUENCES IN SCHEMA",
4729 "ALL TABLES IN SCHEMA",
4732 "FOREIGN DATA WRAPPER",
4750 "PROCEDURES IN SCHEMA",
4751 "ROUTINES IN SCHEMA",
4752 "SEQUENCES IN SCHEMA",
4753 "TABLES IN SCHEMA");
4776 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4817 "WITH GRANT OPTION",
4850 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
MatchAny,
"ON",
"ALL",
MatchAny,
"IN",
"SCHEMA",
MatchAny))
4913 else if (
Matches(
"IMPORT",
"FOREIGN"))
4929 else if (
TailMatches(
"NOT",
"MATCHED",
"THEN",
"INSERT"))
4946 COMPLETE_WITH(
"(",
"DEFAULT VALUES",
"SELECT",
"TABLE",
"VALUES",
"OVERRIDING");
4973 else if (
Matches(
"LOCK",
"TABLE"))
4976 else if (
Matches(
"LOCK",
"TABLE",
"ONLY") ||
Matches(
"LOCK",
"ONLY"))
4990 "ROW SHARE MODE",
"ROW EXCLUSIVE MODE",
4991 "SHARE UPDATE EXCLUSIVE MODE",
"SHARE MODE",
4992 "SHARE ROW EXCLUSIVE MODE",
4993 "EXCLUSIVE MODE",
"ACCESS EXCLUSIVE MODE");
5005 "UPDATE EXCLUSIVE MODE");
5082 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE|TARGET"))
5090 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY"))
5097 else if (
TailMatches(
"WHEN",
"MATCHED",
"THEN") ||
5098 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE",
"THEN"))
5104 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"THEN") ||
5105 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"TARGET",
"THEN"))
5129 COMPLETE_WITH(
"SELECT",
"UPDATE",
"INSERT INTO",
"DELETE FROM",
5130 "MERGE INTO",
"VALUES",
"WITH",
"TABLE");
5140 else if (
Matches(
"REASSIGN",
"OWNED"))
5142 else if (
Matches(
"REASSIGN",
"OWNED",
"BY"))
5152 else if (
Matches(
"REFRESH",
"MATERIALIZED"))
5154 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW"))
5157 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY"))
5161 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny))
5163 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH"))
5165 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH"))
5167 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH",
"NO"))
5169 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH",
"NO"))
5173 else if (
Matches(
"REINDEX") ||
5175 COMPLETE_WITH(
"TABLE",
"INDEX",
"SYSTEM",
"SCHEMA",
"DATABASE");
5176 else if (
Matches(
"REINDEX",
"TABLE") ||
5177 Matches(
"REINDEX",
"(*)",
"TABLE"))
5180 else if (
Matches(
"REINDEX",
"INDEX") ||
5181 Matches(
"REINDEX",
"(*)",
"INDEX"))
5184 else if (
Matches(
"REINDEX",
"SCHEMA") ||
5185 Matches(
"REINDEX",
"(*)",
"SCHEMA"))
5188 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE") ||
5189 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE"))
5192 else if (
Matches(
"REINDEX",
"TABLE",
"CONCURRENTLY") ||
5193 Matches(
"REINDEX",
"(*)",
"TABLE",
"CONCURRENTLY"))
5195 else if (
Matches(
"REINDEX",
"INDEX",
"CONCURRENTLY") ||
5196 Matches(
"REINDEX",
"(*)",
"INDEX",
"CONCURRENTLY"))
5198 else if (
Matches(
"REINDEX",
"SCHEMA",
"CONCURRENTLY") ||
5199 Matches(
"REINDEX",
"(*)",
"SCHEMA",
"CONCURRENTLY"))
5201 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE",
"CONCURRENTLY") ||
5202 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE",
"CONCURRENTLY"))
5221 "(",
"USING INDEX");
5222 else if (
Matches(
"REPACK",
"(*)"))
5255 else if (
TailMatches(
"ANALYZE|CONCURRENTLY|VERBOSE"))
5262 else if (
Matches(
"SECURITY",
"LABEL"))
5266 else if (
Matches(
"SECURITY",
"LABEL",
"ON") ||
5268 COMPLETE_WITH(
"TABLE",
"COLUMN",
"AGGREGATE",
"DATABASE",
"DOMAIN",
5269 "EVENT TRIGGER",
"FOREIGN TABLE",
"FUNCTION",
5270 "LARGE OBJECT",
"MATERIALIZED VIEW",
"LANGUAGE",
5271 "PROPERTY GRAPH",
"PUBLICATION",
"PROCEDURE",
"ROLE",
"ROUTINE",
"SCHEMA",
5272 "SEQUENCE",
"SUBSCRIPTION",
"TABLESPACE",
"TYPE",
"VIEW");
5273 else if (
Matches(
"SECURITY",
"LABEL",
"ON",
"PROPERTY",
"GRAPH"))
5295 "SESSION AUTHORIZATION",
5297 else if (
Matches(
"SHOW",
"SESSION"))
5300 else if (
Matches(
"SET",
"TRANSACTION"))
5301 COMPLETE_WITH(
"SNAPSHOT",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5302 else if (
Matches(
"BEGIN|START",
"TRANSACTION") ||
5305 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION"))
5306 COMPLETE_WITH(
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5307 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"NOT") ||
5309 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"NOT"))
5311 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION") ||
5312 Matches(
"BEGIN",
"ISOLATION") ||
5313 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION"))
5315 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL") ||
5316 Matches(
"BEGIN",
"ISOLATION",
"LEVEL") ||
5317 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL"))
5319 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"READ") ||
5320 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"READ") ||
5321 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"READ"))
5323 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5324 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5325 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"REPEATABLE"))
5327 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"READ") ||
5329 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"READ"))
5332 else if (
Matches(
"SET",
"CONSTRAINTS"))
5339 else if (
Matches(
"SET",
"ROLE"))
5342 else if (
Matches(
"SET",
"SESSION"))
5343 COMPLETE_WITH(
"AUTHORIZATION",
"CHARACTERISTICS AS TRANSACTION");
5345 else if (
Matches(
"SET",
"SESSION",
"AUTHORIZATION"))
5349 else if (
Matches(
"RESET",
"SESSION"))
5372 "YMD",
"DMY",
"MDY",
5373 "US",
"European",
"NonEuropean",
5379 " AND nspname NOT LIKE E'pg\\\\_toast%%'"
5380 " AND nspname NOT LIKE E'pg\\\\_temp%%'",
5405 "1",
"0",
"DEFAULT");
5432 else if (
Matches(
"TRUNCATE",
"TABLE"))
5440 COMPLETE_WITH(
"RESTART IDENTITY",
"CONTINUE IDENTITY",
"CASCADE",
"RESTRICT");
5475 else if (
Matches(
"ALTER|CREATE|DROP",
"USER",
"MAPPING"))
5477 else if (
Matches(
"CREATE",
"USER",
"MAPPING",
"FOR"))
5483 else if (
Matches(
"ALTER|DROP",
"USER",
"MAPPING",
"FOR"))
5485 else if (
Matches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING",
"FOR",
MatchAny))
5512 "DISABLE_PAGE_SKIPPING",
"SKIP_LOCKED",
5513 "INDEX_CLEANUP",
"PROCESS_MAIN",
"PROCESS_TOAST",
5514 "TRUNCATE",
"PARALLEL",
"SKIP_DATABASE_STATS",
5515 "ONLY_DATABASE_STATS",
"BUFFER_USAGE_LIMIT");
5516 else if (
TailMatches(
"FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|PROCESS_MAIN|PROCESS_TOAST|TRUNCATE|SKIP_DATABASE_STATS|ONLY_DATABASE_STATS"))
5521 else if (
Matches(
"VACUUM",
"(*)"))
5524 else if (
Matches(
"VACUUM",
"FULL"))
5559 else if (
Matches(
"WAIT",
"FOR"))
5561 else if (
Matches(
"WAIT",
"FOR",
"LSN"))
5585 COMPLETE_WITH(
"'standby_replay'",
"'standby_write'",
"'standby_flush'",
"'primary_flush'");
5759 else if (
TailMatches(
"CREATE|ALTER|DROP",
"EVENT"))
5761 else if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN"))
5765 else if (
TailMatches(
"CREATE|ALTER|DROP",
"MATERIALIZED"))
5767 else if (
TailMatches(
"CREATE|ALTER|DROP",
"PROPERTY"))
5769 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT"))
5771 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER"))
5776 if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN",
"DATA"))
5778 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT",
"SEARCH"))
5779 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
5780 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING"))
5789 "display_false",
"display_true",
"expanded",
5790 "fieldsep",
"fieldsep_zero",
"footer",
"format",
5791 "linestyle",
"null",
"numericlocale",
5792 "pager",
"pager_min_lines",
5793 "recordsep",
"recordsep_zero",
5794 "tableattr",
"title",
"tuples_only",
5795 "unicode_border_linestyle",
5796 "unicode_column_linestyle",
5797 "unicode_header_linestyle",
5803 "latex-longtable",
"troff-ms",
"unaligned",
5812 "unicode_column_linestyle|"
5813 "unicode_header_linestyle"))
5822 if (
TailMatchesCS(
"AUTOCOMMIT|ON_ERROR_STOP|QUIET|SHOW_ALL_RESULTS|"
5823 "SINGLELINE|SINGLESTEP"))
5827 "preserve-lower",
"preserve-upper");
5834 "ignoreboth",
"none");
5846 else if (
TailMatchesCS(
"\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|"
5847 "\\ir|\\include_relative|\\o|\\out|"
5848 "\\s|\\w|\\write|\\lo_import") ||
5880 static int list_index,
6032 static int list_index,
6118 "%s, NULL::pg_catalog.text FROM %s",
6123 ", pg_catalog.pg_namespace nr");
6141 " AND %s = nr.oid AND nr.nspname = '%s'",
6158 "pg_catalog.pg_class c") == 0 &&
6162 " AND c.relnamespace <> (SELECT oid FROM"
6163 " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')");
6173 "SELECT NULL::pg_catalog.text, n.nspname "
6174 "FROM pg_catalog.pg_namespace n "
6175 "WHERE n.nspname LIKE '%s'",
6184 " AND n.nspname NOT LIKE E'pg\\\\_%'");
6201 "FROM %s, pg_catalog.pg_namespace n",
6206 ", pg_catalog.pg_namespace nr");
6224 " AND %s = nr.oid AND nr.nspname = '%s'",
6267 const char *item =
NULL;
6320 const char *item = *
itemp++;
6338 const char *item = *
itemp++;
6403 static int string_length,
6507 int *
maxvars,
const char *varname,
6508 const char *prefix,
const char *suffix)
6516 (*varnames)[(*nvars)++] =
psprintf(
"%s%s%s", prefix, varname, suffix);
6548 varnames[nvars] =
NULL;
6551 for (
i = 0;
i < nvars;
i++)
6570 static int list_index;
6628#ifdef USE_FILENAME_QUOTING_FUNCTIONS
6645#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
6702 if (*ret ==
'\'' &&
is_dir)
6730 unsigned char first =
ref[0];
6739 for (p = ret; *p; p++)
6744 for (p = ret; *p; p++)
6785 char *
bptr = buffer;
6899 if (
ch >=
'A' &&
ch <=
'Z')
6909 *schemaname =
sname;
6939 buflen +=
strlen(schemaname) + 1;
6945 for (
const char *p = schemaname; *p; p++)
6973 for (
const char *p = schemaname; *p; p++)
7058 pg_log_error(
"tab completion query failed: %s\nQuery was:\n%s",
7219 "SELECT vartype FROM pg_catalog.pg_settings "
7220 "WHERE pg_catalog.lower(name) = pg_catalog.lower('%s')",
7235#ifdef USE_FILENAME_QUOTING_FUNCTIONS
7284#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
7319 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)