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"))
3286 else if (
Matches(
"CLUSTER",
"VERBOSE") ||
3317 else if (
Matches(
"COMMENT",
"ON"))
3318 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
3319 "COLUMN",
"CONSTRAINT",
"CONVERSION",
"DATABASE",
3320 "DOMAIN",
"EXTENSION",
"EVENT TRIGGER",
3321 "FOREIGN DATA WRAPPER",
"FOREIGN TABLE",
3322 "FUNCTION",
"INDEX",
"LANGUAGE",
"LARGE OBJECT",
3323 "MATERIALIZED VIEW",
"OPERATOR",
"POLICY",
3324 "PROCEDURE",
"PROCEDURAL LANGUAGE",
"PROPERTY GRAPH",
"PUBLICATION",
"ROLE",
3325 "ROUTINE",
"RULE",
"SCHEMA",
"SEQUENCE",
"SERVER",
3326 "STATISTICS",
"SUBSCRIPTION",
"TABLE",
3327 "TABLESPACE",
"TEXT SEARCH",
"TRANSFORM FOR",
3328 "TRIGGER",
"TYPE",
"VIEW");
3329 else if (
Matches(
"COMMENT",
"ON",
"ACCESS",
"METHOD"))
3331 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT"))
3341 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT",
MatchAny,
"ON",
"DOMAIN"))
3343 else if (
Matches(
"COMMENT",
"ON",
"EVENT",
"TRIGGER"))
3345 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN"))
3347 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN",
"TABLE"))
3349 else if (
Matches(
"COMMENT",
"ON",
"MATERIALIZED",
"VIEW"))
3351 else if (
Matches(
"COMMENT",
"ON",
"POLICY"))
3360 else if (
Matches(
"COMMENT",
"ON",
"PROCEDURAL",
"LANGUAGE"))
3362 else if (
Matches(
"COMMENT",
"ON",
"PROPERTY",
"GRAPH"))
3371 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH"))
3372 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3373 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"CONFIGURATION"))
3375 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"DICTIONARY"))
3377 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"PARSER"))
3379 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"TEMPLATE"))
3381 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR"))
3385 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3409 else if (
Matches(
"COPY|\\copy"))
3412 else if (
Matches(
"COPY|\\copy",
"("))
3413 COMPLETE_WITH(
"SELECT",
"TABLE",
"VALUES",
"INSERT INTO",
"UPDATE",
"DELETE FROM",
"MERGE INTO",
"WITH");
3523 "PROVIDER =",
"DETERMINISTIC =");
3532 COMPLETE_WITH(
"OWNER",
"TEMPLATE",
"ENCODING",
"TABLESPACE",
3533 "IS_TEMPLATE",
"STRATEGY",
3534 "ALLOW_CONNECTIONS",
"CONNECTION LIMIT",
3535 "LC_COLLATE",
"LC_CTYPE",
"LOCALE",
"OID",
3536 "LOCALE_PROVIDER",
"ICU_LOCALE");
3550 "NOT NULL",
"NULL",
"CHECK (");
3556 else if (
Matches(
"CREATE",
"EXTENSION"))
3569 else if (
Matches(
"CREATE",
"FOREIGN"))
3574 COMPLETE_WITH(
"CONNECTION",
"HANDLER",
"OPTIONS",
"VALIDATOR");
3591 "ON",
"CONCURRENTLY");
3605 else if (
TailMatches(
"CREATE|UNIQUE",
"INDEX",
"CONCURRENTLY"))
3637 else if (
Matches(
"CREATE",
"OR"))
3649 COMPLETE_WITH(
"AS",
"FOR",
"TO",
"USING (",
"WITH CHECK (");
3662 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3685 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3724 else if (
Matches(
"CREATE",
"PROPERTY"))
3728 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE"))
3730 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES"))
3732 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"("))
3734 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"(*)"))
3745 COMPLETE_WITH(
"FOR TABLE",
"FOR TABLES IN SCHEMA",
"FOR ALL TABLES",
"FOR ALL SEQUENCES",
"WITH (");
3747 COMPLETE_WITH(
"TABLE",
"TABLES IN SCHEMA",
"ALL TABLES",
"ALL SEQUENCES");
3750 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES"))
3752 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT"))
3754 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"("))
3756 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
3758 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
3760 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
3784 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"TABLES",
"IN",
"SCHEMA"))
3786 " AND nspname NOT LIKE E'pg\\\\_%%'",
3792 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
3812 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE"))
3815 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE",
"TO"))
3819 else if (
Matches(
"CREATE",
"SCHEMA"))
3822 else if (
Matches(
"CREATE",
"SCHEMA",
"AUTHORIZATION") ||
3835 COMPLETE_WITH(
"AS",
"INCREMENT BY",
"MINVALUE",
"MAXVALUE",
"NO",
3836 "CACHE",
"CYCLE",
"OWNED BY",
"START WITH");
3887 COMPLETE_WITH(
"EXECUTE",
"SELECT",
"TABLE",
"VALUES",
"WITH");
3890 COMPLETE_WITH(
"AS",
"INHERITS (",
"PARTITION BY",
"USING",
"TABLESPACE",
"WITH (");
3892 COMPLETE_WITH(
"AS",
"INHERITS (",
"USING",
"TABLESPACE",
"WITH (");
3894 COMPLETE_WITH(
"AS",
"INHERITS (",
"ON COMMIT",
"PARTITION BY",
"USING",
3895 "TABLESPACE",
"WITH (");
3905 else if (
TailMatches(
"CREATE",
"TEMP|TEMPORARY",
"TABLE",
MatchAny,
"(*)",
"ON",
"COMMIT"))
3917 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3918 else if (
TailMatches(
"CREATE",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
3922 else if (
Matches(
"CREATE",
"TRANSFORM") ||
3923 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM"))
3925 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR") ||
3926 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR"))
3931 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE") ||
3932 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3961 COMPLETE_WITH(
"binary",
"connect",
"copy_data",
"create_slot",
3962 "disable_on_error",
"enabled",
"failover",
3963 "max_retention_duration",
"origin",
3964 "password_required",
"retain_dead_tuples",
3965 "run_as_owner",
"slot_name",
"streaming",
3966 "synchronous_commit",
"two_phase");
4023 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4026 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4033 "INITIALLY",
"IMMEDIATE|DEFERRED") ||
4035 "INITIALLY",
"IMMEDIATE|DEFERRED"))
4038 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4040 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4048 "OLD|NEW",
"TABLE") ||
4050 "OLD|NEW",
"TABLE"))
4053 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4055 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4057 "REFERENCING",
"OLD",
"TABLE",
MatchAny) ||
4059 "REFERENCING",
"OLD",
"TABLE",
MatchAny))
4062 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4064 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4067 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4069 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4071 "REFERENCING",
"NEW",
"TABLE",
MatchAny) ||
4073 "REFERENCING",
"NEW",
"TABLE",
MatchAny))
4076 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4078 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4081 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4083 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4085 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4087 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4089 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4091 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4093 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4095 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny))
4113 "FOR",
"EACH",
"ROW|STATEMENT") ||
4115 "FOR",
"EACH",
"ROW|STATEMENT") ||
4117 "FOR",
"ROW|STATEMENT") ||
4119 "FOR",
"ROW|STATEMENT"))
4152 "EXECUTE",
"FUNCTION|PROCEDURE") ||
4154 "EXECUTE",
"FUNCTION|PROCEDURE"))
4160 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4161 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4162 "LOGIN",
"NOBYPASSRLS",
4163 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4164 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4165 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4166 "VALID UNTIL",
"WITH");
4171 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4172 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4173 "LOGIN",
"NOBYPASSRLS",
4174 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4175 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4176 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4201 "TYPMOD_IN",
"TYPMOD_OUT",
"ANALYZE",
"SUBSCRIPT",
4202 "INTERNALLENGTH",
"PASSEDBYVALUE",
"ALIGNMENT",
4203 "STORAGE",
"LIKE",
"CATEGORY",
"PREFERRED",
4204 "DEFAULT",
"ELEMENT",
"DELIMITER",
4215 "CANONICAL",
"SUBTYPE_DIFF",
4216 "MULTIRANGE_TYPE_NAME");
4243 TailMatches(
"CREATE",
"OR",
"REPLACE",
"VIEW",
MatchAny,
"WITH",
"(",
"check_option",
"="))
4255 else if (
Matches(
"CREATE",
"MATERIALIZED"))
4265 else if (
Matches(
"CREATE",
"MATERIALIZED",
"VIEW",
MatchAny,
"USING"))
4280 else if (
Matches(
"CREATE",
"EVENT"))
4287 COMPLETE_WITH(
"ddl_command_start",
"ddl_command_end",
"login",
4288 "sql_drop",
"table_rewrite");
4309 else if (
Matches(
"CREATE",
"EVENT",
"TRIGGER",
MatchAnyN,
"EXECUTE",
"FUNCTION|PROCEDURE"))
4313 else if (
Matches(
"DEALLOCATE"))
4324 COMPLETE_WITH(
"BINARY",
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
4335 COMPLETE_WITH(
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
"CURSOR");
4394 "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|PUBLICATION|SCHEMA|SEQUENCE|SERVER|SUBSCRIPTION|STATISTICS|TABLE|TYPE|VIEW",
4400 Matches(
"DROP",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
4407 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
4409 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny,
"("))
4411 else if (
Matches(
"DROP",
"FOREIGN"))
4419 else if (
Matches(
"DROP",
"INDEX"))
4422 else if (
Matches(
"DROP",
"INDEX",
"CONCURRENTLY"))
4430 else if (
Matches(
"DROP",
"MATERIALIZED"))
4432 else if (
Matches(
"DROP",
"MATERIALIZED",
"VIEW"))
4438 else if (
Matches(
"DROP",
"OWNED"))
4440 else if (
Matches(
"DROP",
"OWNED",
"BY"))
4446 else if (
Matches(
"DROP",
"TEXT",
"SEARCH"))
4447 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
4461 else if (
Matches(
"DROP",
"ACCESS"))
4463 else if (
Matches(
"DROP",
"ACCESS",
"METHOD"))
4467 else if (
Matches(
"DROP",
"EVENT"))
4469 else if (
Matches(
"DROP",
"EVENT",
"TRIGGER"))
4473 else if (
Matches(
"DROP",
"POLICY"))
4488 else if (
Matches(
"DROP",
"PROPERTY"))
4490 else if (
Matches(
"DROP",
"PROPERTY",
"GRAPH"))
4505 else if (
Matches(
"DROP",
"TRANSFORM"))
4507 else if (
Matches(
"DROP",
"TRANSFORM",
"FOR"))
4528 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4529 "MERGE INTO",
"EXECUTE",
"ANALYZE",
"VERBOSE");
4539 COMPLETE_WITH(
"ANALYZE",
"VERBOSE",
"COSTS",
"SETTINGS",
"GENERIC_PLAN",
4540 "BUFFERS",
"SERIALIZE",
"WAL",
"TIMING",
"SUMMARY",
4541 "MEMORY",
"FORMAT");
4542 else if (
TailMatches(
"ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY|MEMORY"))
4549 else if (
Matches(
"EXPLAIN",
"ANALYZE"))
4550 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4551 "MERGE INTO",
"EXECUTE",
"VERBOSE");
4552 else if (
Matches(
"EXPLAIN",
"(*)") ||
4553 Matches(
"EXPLAIN",
"VERBOSE") ||
4554 Matches(
"EXPLAIN",
"ANALYZE",
"VERBOSE"))
4555 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4556 "MERGE INTO",
"EXECUTE");
4564 else if (
Matches(
"FETCH|MOVE"))
4582 else if (
Matches(
"FETCH|MOVE",
"BACKWARD|FORWARD"))
4593 else if (
Matches(
"FETCH|MOVE",
"ABSOLUTE|BACKWARD|FORWARD|RELATIVE",
4595 Matches(
"FETCH|MOVE",
"ALL|NEXT|PRIOR|FIRST|LAST"))
4605 else if (
TailMatches(
"FOREIGN",
"DATA",
"WRAPPER") &&
4627 TailMatches(
"REVOKE",
"ADMIN|GRANT|INHERIT|SET",
"OPTION",
"FOR"))
4633 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4638 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4639 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL");
4642 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4643 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL",
4644 "GRANT OPTION FOR");
4654 "INHERIT OPTION FOR",
4656 else if (
TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR"))
4658 else if (
TailMatches(
"REVOKE",
"ADMIN|INHERIT|SET",
"OPTION",
"FOR"))
4663 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER"))
4669 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"SET") ||
4671 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER",
"SYSTEM"))
4697 if (
TailMatches(
"SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|MAINTAIN|ALL"))
4719 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4720 COMPLETE_WITH(
"TABLES",
"SEQUENCES",
"FUNCTIONS",
"PROCEDURES",
"ROUTINES",
"TYPES",
"SCHEMAS",
"LARGE OBJECTS");
4723 "ALL FUNCTIONS IN SCHEMA",
4724 "ALL PROCEDURES IN SCHEMA",
4725 "ALL ROUTINES IN SCHEMA",
4726 "ALL SEQUENCES IN SCHEMA",
4727 "ALL TABLES IN SCHEMA",
4730 "FOREIGN DATA WRAPPER",
4748 "PROCEDURES IN SCHEMA",
4749 "ROUTINES IN SCHEMA",
4750 "SEQUENCES IN SCHEMA",
4751 "TABLES IN SCHEMA");
4774 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4815 "WITH GRANT OPTION",
4848 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
MatchAny,
"ON",
"ALL",
MatchAny,
"IN",
"SCHEMA",
MatchAny))
4911 else if (
Matches(
"IMPORT",
"FOREIGN"))
4927 else if (
TailMatches(
"NOT",
"MATCHED",
"THEN",
"INSERT"))
4944 COMPLETE_WITH(
"(",
"DEFAULT VALUES",
"SELECT",
"TABLE",
"VALUES",
"OVERRIDING");
4971 else if (
Matches(
"LOCK",
"TABLE"))
4974 else if (
Matches(
"LOCK",
"TABLE",
"ONLY") ||
Matches(
"LOCK",
"ONLY"))
4988 "ROW SHARE MODE",
"ROW EXCLUSIVE MODE",
4989 "SHARE UPDATE EXCLUSIVE MODE",
"SHARE MODE",
4990 "SHARE ROW EXCLUSIVE MODE",
4991 "EXCLUSIVE MODE",
"ACCESS EXCLUSIVE MODE");
5003 "UPDATE EXCLUSIVE MODE");
5080 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE|TARGET"))
5088 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY"))
5095 else if (
TailMatches(
"WHEN",
"MATCHED",
"THEN") ||
5096 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE",
"THEN"))
5102 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"THEN") ||
5103 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"TARGET",
"THEN"))
5127 COMPLETE_WITH(
"SELECT",
"UPDATE",
"INSERT INTO",
"DELETE FROM",
5128 "MERGE INTO",
"VALUES",
"WITH",
"TABLE");
5138 else if (
Matches(
"REASSIGN",
"OWNED"))
5140 else if (
Matches(
"REASSIGN",
"OWNED",
"BY"))
5150 else if (
Matches(
"REFRESH",
"MATERIALIZED"))
5152 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW"))
5155 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY"))
5159 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny))
5161 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH"))
5163 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH"))
5165 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH",
"NO"))
5167 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH",
"NO"))
5171 else if (
Matches(
"REINDEX") ||
5173 COMPLETE_WITH(
"TABLE",
"INDEX",
"SYSTEM",
"SCHEMA",
"DATABASE");
5174 else if (
Matches(
"REINDEX",
"TABLE") ||
5175 Matches(
"REINDEX",
"(*)",
"TABLE"))
5178 else if (
Matches(
"REINDEX",
"INDEX") ||
5179 Matches(
"REINDEX",
"(*)",
"INDEX"))
5182 else if (
Matches(
"REINDEX",
"SCHEMA") ||
5183 Matches(
"REINDEX",
"(*)",
"SCHEMA"))
5186 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE") ||
5187 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE"))
5190 else if (
Matches(
"REINDEX",
"TABLE",
"CONCURRENTLY") ||
5191 Matches(
"REINDEX",
"(*)",
"TABLE",
"CONCURRENTLY"))
5193 else if (
Matches(
"REINDEX",
"INDEX",
"CONCURRENTLY") ||
5194 Matches(
"REINDEX",
"(*)",
"INDEX",
"CONCURRENTLY"))
5196 else if (
Matches(
"REINDEX",
"SCHEMA",
"CONCURRENTLY") ||
5197 Matches(
"REINDEX",
"(*)",
"SCHEMA",
"CONCURRENTLY"))
5199 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE",
"CONCURRENTLY") ||
5200 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE",
"CONCURRENTLY"))
5219 "(",
"USING INDEX");
5220 else if (
Matches(
"REPACK",
"(*)"))
5253 else if (
TailMatches(
"ANALYZE",
"CONCURRENTLY",
"VERBOSE"))
5260 else if (
Matches(
"SECURITY",
"LABEL"))
5264 else if (
Matches(
"SECURITY",
"LABEL",
"ON") ||
5266 COMPLETE_WITH(
"TABLE",
"COLUMN",
"AGGREGATE",
"DATABASE",
"DOMAIN",
5267 "EVENT TRIGGER",
"FOREIGN TABLE",
"FUNCTION",
5268 "LARGE OBJECT",
"MATERIALIZED VIEW",
"LANGUAGE",
5269 "PROPERTY GRAPH",
"PUBLICATION",
"PROCEDURE",
"ROLE",
"ROUTINE",
"SCHEMA",
5270 "SEQUENCE",
"SUBSCRIPTION",
"TABLESPACE",
"TYPE",
"VIEW");
5271 else if (
Matches(
"SECURITY",
"LABEL",
"ON",
"PROPERTY",
"GRAPH"))
5293 "SESSION AUTHORIZATION",
5295 else if (
Matches(
"SHOW",
"SESSION"))
5298 else if (
Matches(
"SET",
"TRANSACTION"))
5299 COMPLETE_WITH(
"SNAPSHOT",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5300 else if (
Matches(
"BEGIN|START",
"TRANSACTION") ||
5303 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION"))
5304 COMPLETE_WITH(
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5305 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"NOT") ||
5307 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"NOT"))
5309 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION") ||
5310 Matches(
"BEGIN",
"ISOLATION") ||
5311 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION"))
5313 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL") ||
5314 Matches(
"BEGIN",
"ISOLATION",
"LEVEL") ||
5315 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL"))
5317 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"READ") ||
5318 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"READ") ||
5319 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"READ"))
5321 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5322 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5323 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"REPEATABLE"))
5325 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"READ") ||
5327 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"READ"))
5330 else if (
Matches(
"SET",
"CONSTRAINTS"))
5337 else if (
Matches(
"SET",
"ROLE"))
5340 else if (
Matches(
"SET",
"SESSION"))
5341 COMPLETE_WITH(
"AUTHORIZATION",
"CHARACTERISTICS AS TRANSACTION");
5343 else if (
Matches(
"SET",
"SESSION",
"AUTHORIZATION"))
5347 else if (
Matches(
"RESET",
"SESSION"))
5370 "YMD",
"DMY",
"MDY",
5371 "US",
"European",
"NonEuropean",
5377 " AND nspname NOT LIKE E'pg\\\\_toast%%'"
5378 " AND nspname NOT LIKE E'pg\\\\_temp%%'",
5403 "1",
"0",
"DEFAULT");
5430 else if (
Matches(
"TRUNCATE",
"TABLE"))
5438 COMPLETE_WITH(
"RESTART IDENTITY",
"CONTINUE IDENTITY",
"CASCADE",
"RESTRICT");
5473 else if (
Matches(
"ALTER|CREATE|DROP",
"USER",
"MAPPING"))
5475 else if (
Matches(
"CREATE",
"USER",
"MAPPING",
"FOR"))
5481 else if (
Matches(
"ALTER|DROP",
"USER",
"MAPPING",
"FOR"))
5483 else if (
Matches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING",
"FOR",
MatchAny))
5510 "DISABLE_PAGE_SKIPPING",
"SKIP_LOCKED",
5511 "INDEX_CLEANUP",
"PROCESS_MAIN",
"PROCESS_TOAST",
5512 "TRUNCATE",
"PARALLEL",
"SKIP_DATABASE_STATS",
5513 "ONLY_DATABASE_STATS",
"BUFFER_USAGE_LIMIT");
5514 else if (
TailMatches(
"FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|PROCESS_MAIN|PROCESS_TOAST|TRUNCATE|SKIP_DATABASE_STATS|ONLY_DATABASE_STATS"))
5519 else if (
Matches(
"VACUUM",
"(*)"))
5522 else if (
Matches(
"VACUUM",
"FULL"))
5557 else if (
Matches(
"WAIT",
"FOR"))
5559 else if (
Matches(
"WAIT",
"FOR",
"LSN"))
5583 COMPLETE_WITH(
"'standby_replay'",
"'standby_write'",
"'standby_flush'",
"'primary_flush'");
5757 else if (
TailMatches(
"CREATE|ALTER|DROP",
"EVENT"))
5759 else if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN"))
5763 else if (
TailMatches(
"CREATE|ALTER|DROP",
"MATERIALIZED"))
5765 else if (
TailMatches(
"CREATE|ALTER|DROP",
"PROPERTY"))
5767 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT"))
5769 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER"))
5774 if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN",
"DATA"))
5776 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT",
"SEARCH"))
5777 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
5778 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING"))
5787 "display_false",
"display_true",
"expanded",
5788 "fieldsep",
"fieldsep_zero",
"footer",
"format",
5789 "linestyle",
"null",
"numericlocale",
5790 "pager",
"pager_min_lines",
5791 "recordsep",
"recordsep_zero",
5792 "tableattr",
"title",
"tuples_only",
5793 "unicode_border_linestyle",
5794 "unicode_column_linestyle",
5795 "unicode_header_linestyle",
5801 "latex-longtable",
"troff-ms",
"unaligned",
5810 "unicode_column_linestyle|"
5811 "unicode_header_linestyle"))
5820 if (
TailMatchesCS(
"AUTOCOMMIT|ON_ERROR_STOP|QUIET|SHOW_ALL_RESULTS|"
5821 "SINGLELINE|SINGLESTEP"))
5825 "preserve-lower",
"preserve-upper");
5832 "ignoreboth",
"none");
5844 else if (
TailMatchesCS(
"\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|"
5845 "\\ir|\\include_relative|\\o|\\out|"
5846 "\\s|\\w|\\write|\\lo_import") ||
5878 static int list_index,
6030 static int list_index,
6116 "%s, NULL::pg_catalog.text FROM %s",
6121 ", pg_catalog.pg_namespace nr");
6139 " AND %s = nr.oid AND nr.nspname = '%s'",
6156 "pg_catalog.pg_class c") == 0 &&
6160 " AND c.relnamespace <> (SELECT oid FROM"
6161 " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')");
6171 "SELECT NULL::pg_catalog.text, n.nspname "
6172 "FROM pg_catalog.pg_namespace n "
6173 "WHERE n.nspname LIKE '%s'",
6182 " AND n.nspname NOT LIKE E'pg\\\\_%'");
6199 "FROM %s, pg_catalog.pg_namespace n",
6204 ", pg_catalog.pg_namespace nr");
6222 " AND %s = nr.oid AND nr.nspname = '%s'",
6265 const char *item =
NULL;
6318 const char *item = *
itemp++;
6336 const char *item = *
itemp++;
6401 static int string_length,
6505 int *
maxvars,
const char *varname,
6506 const char *prefix,
const char *suffix)
6514 (*varnames)[(*nvars)++] =
psprintf(
"%s%s%s", prefix, varname, suffix);
6546 varnames[nvars] =
NULL;
6549 for (
i = 0;
i < nvars;
i++)
6568 static int list_index;
6626#ifdef USE_FILENAME_QUOTING_FUNCTIONS
6643#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
6700 if (*ret ==
'\'' &&
is_dir)
6728 unsigned char first =
ref[0];
6737 for (p = ret; *p; p++)
6742 for (p = ret; *p; p++)
6783 char *
bptr = buffer;
6897 if (
ch >=
'A' &&
ch <=
'Z')
6907 *schemaname =
sname;
6937 buflen +=
strlen(schemaname) + 1;
6943 for (
const char *p = schemaname; *p; p++)
6971 for (
const char *p = schemaname; *p; p++)
7056 pg_log_error(
"tab completion query failed: %s\nQuery was:\n%s",
7217 "SELECT vartype FROM pg_catalog.pg_settings "
7218 "WHERE pg_catalog.lower(name) = pg_catalog.lower('%s')",
7233#ifdef USE_FILENAME_QUOTING_FUNCTIONS
7282#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
7317 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)