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;
256#define COMPLETE_WITH_QUERY(query) \
257 COMPLETE_WITH_QUERY_LIST(query, NULL)
259#define COMPLETE_WITH_QUERY_LIST(query, list) \
261 completion_charp = query; \
262 completion_charpp = list; \
263 completion_verbatim = false; \
264 matches = rl_completion_matches(text, complete_from_query); \
267#define COMPLETE_WITH_QUERY_PLUS(query, ...) \
269 static const char *const list[] = { __VA_ARGS__, NULL }; \
270 COMPLETE_WITH_QUERY_LIST(query, list); \
273#define COMPLETE_WITH_QUERY_VERBATIM(query) \
274 COMPLETE_WITH_QUERY_VERBATIM_LIST(query, NULL)
276#define COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list) \
278 completion_charp = query; \
279 completion_charpp = list; \
280 completion_verbatim = true; \
281 matches = rl_completion_matches(text, complete_from_query); \
284#define COMPLETE_WITH_QUERY_VERBATIM_PLUS(query, ...) \
286 static const char *const list[] = { __VA_ARGS__, NULL }; \
287 COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list); \
290#define COMPLETE_WITH_VERSIONED_QUERY(query) \
291 COMPLETE_WITH_VERSIONED_QUERY_LIST(query, NULL)
293#define COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list) \
295 completion_vquery = query; \
296 completion_charpp = list; \
297 completion_verbatim = false; \
298 matches = rl_completion_matches(text, complete_from_versioned_query); \
301#define COMPLETE_WITH_VERSIONED_QUERY_PLUS(query, ...) \
303 static const char *const list[] = { __VA_ARGS__, NULL }; \
304 COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list); \
307#define COMPLETE_WITH_SCHEMA_QUERY(query) \
308 COMPLETE_WITH_SCHEMA_QUERY_LIST(query, NULL)
310#define COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list) \
312 completion_squery = &(query); \
313 completion_charpp = list; \
314 completion_verbatim = false; \
315 matches = rl_completion_matches(text, complete_from_schema_query); \
318#define COMPLETE_WITH_SCHEMA_QUERY_PLUS(query, ...) \
320 static const char *const list[] = { __VA_ARGS__, NULL }; \
321 COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list); \
324#define COMPLETE_WITH_SCHEMA_QUERY_VERBATIM(query) \
326 completion_squery = &(query); \
327 completion_charpp = NULL; \
328 completion_verbatim = true; \
329 matches = rl_completion_matches(text, complete_from_schema_query); \
332#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(query) \
333 COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, NULL)
335#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list) \
337 completion_squery = query; \
338 completion_charpp = list; \
339 completion_verbatim = false; \
340 matches = rl_completion_matches(text, complete_from_versioned_schema_query); \
343#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_PLUS(query, ...) \
345 static const char *const list[] = { __VA_ARGS__, NULL }; \
346 COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list); \
353#define COMPLETE_WITH_CONST(cs, con) \
355 completion_case_sensitive = (cs); \
356 completion_charp = (con); \
357 matches = rl_completion_matches(text, complete_from_const); \
360#define COMPLETE_WITH_LIST_INT(cs, list) \
362 completion_case_sensitive = (cs); \
363 completion_charpp = (list); \
364 matches = rl_completion_matches(text, complete_from_list); \
367#define COMPLETE_WITH_LIST(list) COMPLETE_WITH_LIST_INT(false, list)
368#define COMPLETE_WITH_LIST_CS(list) COMPLETE_WITH_LIST_INT(true, list)
370#define COMPLETE_WITH(...) \
372 static const char *const list[] = { __VA_ARGS__, NULL }; \
373 COMPLETE_WITH_LIST(list); \
376#define COMPLETE_WITH_CS(...) \
378 static const char *const list[] = { __VA_ARGS__, NULL }; \
379 COMPLETE_WITH_LIST_CS(list); \
382#define COMPLETE_WITH_ATTR(relation) \
383 COMPLETE_WITH_ATTR_LIST(relation, NULL)
385#define COMPLETE_WITH_ATTR_LIST(relation, list) \
387 set_completion_reference(relation); \
388 completion_squery = &(Query_for_list_of_attributes); \
389 completion_charpp = list; \
390 completion_verbatim = false; \
391 matches = rl_completion_matches(text, complete_from_schema_query); \
394#define COMPLETE_WITH_ATTR_PLUS(relation, ...) \
396 static const char *const list[] = { __VA_ARGS__, NULL }; \
397 COMPLETE_WITH_ATTR_LIST(relation, list); \
406#define COMPLETE_WITH_ENUM_VALUE(type) \
408 set_completion_reference(type); \
409 if (text[0] == '\'' || \
410 start == 0 || rl_line_buffer[start - 1] != '\'') \
411 completion_squery = &(Query_for_list_of_enum_values_quoted); \
413 completion_squery = &(Query_for_list_of_enum_values_unquoted); \
414 completion_charpp = NULL; \
415 completion_verbatim = true; \
416 matches = rl_completion_matches(text, complete_from_schema_query); \
423#define COMPLETE_WITH_TIMEZONE_NAME() \
425 static const char *const list[] = { "DEFAULT", NULL }; \
426 if (text[0] == '\'') \
427 completion_charp = Query_for_list_of_timezone_names_quoted_in; \
428 else if (start == 0 || rl_line_buffer[start - 1] != '\'') \
429 completion_charp = Query_for_list_of_timezone_names_quoted_out; \
431 completion_charp = Query_for_list_of_timezone_names_unquoted; \
432 completion_charpp = list; \
433 completion_verbatim = true; \
434 matches = rl_completion_matches(text, complete_from_query); \
437#define COMPLETE_WITH_FUNCTION_ARG(function) \
439 set_completion_reference(function); \
440 completion_squery = &(Query_for_list_of_arguments); \
441 completion_charpp = NULL; \
442 completion_verbatim = true; \
443 matches = rl_completion_matches(text, complete_from_schema_query); \
446#define COMPLETE_WITH_FILES_LIST(escape, force_quote, list) \
448 completion_charp = escape; \
449 completion_charpp = list; \
450 completion_force_quote = force_quote; \
451 matches = rl_completion_matches(text, complete_from_files); \
454#define COMPLETE_WITH_FILES(escape, force_quote) \
455 COMPLETE_WITH_FILES_LIST(escape, force_quote, NULL)
457#define COMPLETE_WITH_FILES_PLUS(escape, force_quote, ...) \
459 static const char *const list[] = { __VA_ARGS__, NULL }; \
460 COMPLETE_WITH_FILES_LIST(escape, force_quote, list); \
463#define COMPLETE_WITH_GENERATOR(generator) \
464 matches = rl_completion_matches(text, generator)
474 .catname =
"pg_catalog.pg_constraint con, pg_catalog.pg_class c1",
475 .selcondition =
"con.conrelid=c1.oid",
476 .result =
"con.conname",
477 .refname =
"c1.relname",
478 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
479 .refnamespace =
"c1.relnamespace",
483 .catname =
"pg_catalog.pg_constraint con, pg_catalog.pg_class c1",
484 .selcondition =
"con.conrelid=c1.oid and not con.convalidated",
485 .result =
"con.conname",
486 .refname =
"c1.relname",
487 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
488 .refnamespace =
"c1.relnamespace",
492 .catname =
"pg_catalog.pg_constraint con, pg_catalog.pg_type t",
493 .selcondition =
"con.contypid=t.oid",
494 .result =
"con.conname",
495 .refname =
"t.typname",
496 .refviscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
497 .refnamespace =
"t.typnamespace",
501 .catname =
"pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i",
502 .selcondition =
"c1.oid=i.indrelid and i.indexrelid=c2.oid",
503 .result =
"c2.relname",
504 .refname =
"c1.relname",
505 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
506 .refnamespace =
"c1.relnamespace",
510 .catname =
"pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i",
511 .selcondition =
"c1.oid=i.indrelid and i.indexrelid=c2.oid and i.indisunique",
512 .result =
"c2.relname",
513 .refname =
"c1.relname",
514 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
515 .refnamespace =
"c1.relnamespace",
520 .min_server_version = 110000,
521 .catname =
"pg_catalog.pg_proc p",
522 .selcondition =
"p.prokind = 'a'",
523 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
524 .namespace =
"p.pronamespace",
525 .result =
"p.proname",
528 .catname =
"pg_catalog.pg_proc p",
529 .selcondition =
"p.proisagg",
530 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
531 .namespace =
"p.pronamespace",
532 .result =
"p.proname",
537 .catname =
"pg_catalog.pg_proc p",
538 .result =
"pg_catalog.oidvectortypes(p.proargtypes)||')'",
539 .refname =
"p.proname",
540 .refviscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
541 .refnamespace =
"p.pronamespace",
545 .catname =
"pg_catalog.pg_attribute a, pg_catalog.pg_class c",
546 .selcondition =
"c.oid = a.attrelid and a.attnum > 0 and not a.attisdropped",
547 .result =
"a.attname",
548 .refname =
"c.relname",
549 .refviscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
550 .refnamespace =
"c.relnamespace",
554 .catname =
"pg_catalog.pg_attribute a, pg_catalog.pg_class c",
555 .selcondition =
"c.oid = a.attrelid and a.attnum > 0 and not a.attisdropped",
556 .result =
"a.attnum::pg_catalog.text",
557 .refname =
"c.relname",
558 .refviscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
559 .refnamespace =
"c.relnamespace",
582 "time with time zone",
583 "time without time zone",
584 "timestamp with time zone",
585 "timestamp without time zone",
591 .catname =
"pg_catalog.pg_type t",
593 .selcondition =
"(t.typrelid = 0 "
595 " FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) "
596 "AND t.typname !~ '^_'",
597 .viscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
598 .namespace =
"t.typnamespace",
599 .result =
"t.typname",
604 .catname =
"pg_catalog.pg_type t",
607 " FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) "
608 "AND t.typname !~ '^_'",
609 .viscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
610 .namespace =
"t.typnamespace",
611 .result =
"t.typname",
615 .catname =
"pg_catalog.pg_type t",
616 .selcondition =
"t.typtype = 'd'",
617 .viscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
618 .namespace =
"t.typnamespace",
619 .result =
"t.typname",
623 .catname =
"pg_catalog.pg_enum e, pg_catalog.pg_type t",
624 .selcondition =
"t.oid = e.enumtypid",
625 .result =
"pg_catalog.quote_literal(enumlabel)",
626 .refname =
"t.typname",
627 .refviscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
628 .refnamespace =
"t.typnamespace",
632 .catname =
"pg_catalog.pg_enum e, pg_catalog.pg_type t",
633 .selcondition =
"t.oid = e.enumtypid",
634 .result =
"e.enumlabel",
635 .refname =
"t.typname",
636 .refviscondition =
"pg_catalog.pg_type_is_visible(t.oid)",
637 .refnamespace =
"t.typnamespace",
643 .min_server_version = 110000,
644 .catname =
"pg_catalog.pg_proc p",
645 .selcondition =
"p.prokind != 'p'",
646 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
647 .namespace =
"p.pronamespace",
648 .result =
"p.proname",
651 .catname =
"pg_catalog.pg_proc p",
652 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
653 .namespace =
"p.pronamespace",
654 .result =
"p.proname",
660 .min_server_version = 110000,
661 .catname =
"pg_catalog.pg_proc p",
662 .selcondition =
"p.prokind = 'p'",
663 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
664 .namespace =
"p.pronamespace",
665 .result =
"p.proname",
674 .catname =
"pg_catalog.pg_proc p",
675 .viscondition =
"pg_catalog.pg_function_is_visible(p.oid)",
676 .namespace =
"p.pronamespace",
677 .result =
"p.proname",
681 .catname =
"pg_catalog.pg_class c",
683 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
684 .namespace =
"c.relnamespace",
685 .result =
"c.relname",
689 .catname =
"pg_catalog.pg_class c",
691 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
692 .namespace =
"c.relnamespace",
693 .result =
"c.relname",
697 .catname =
"pg_catalog.pg_class c",
701 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
702 .namespace =
"c.relnamespace",
703 .result =
"c.relname",
707 .catname =
"pg_catalog.pg_class c",
709 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
710 .namespace =
"c.relnamespace",
711 .result =
"c.relname",
715 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_constraint con",
716 .selcondition =
"c.oid=con.conrelid and c.relkind IN ("
719 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
720 .namespace =
"c.relnamespace",
721 .result =
"c.relname",
722 .use_distinct =
true,
723 .refname =
"con.conname",
727 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_policy p",
728 .selcondition =
"c.oid=p.polrelid",
729 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
730 .namespace =
"c.relnamespace",
731 .result =
"c.relname",
732 .use_distinct =
true,
733 .refname =
"p.polname",
737 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_rewrite r",
738 .selcondition =
"c.oid=r.ev_class",
739 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
740 .namespace =
"c.relnamespace",
741 .result =
"c.relname",
742 .use_distinct =
true,
743 .refname =
"r.rulename",
747 .catname =
"pg_catalog.pg_class c, pg_catalog.pg_trigger t",
748 .selcondition =
"c.oid=t.tgrelid",
749 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
750 .namespace =
"c.relnamespace",
751 .result =
"c.relname",
752 .use_distinct =
true,
753 .refname =
"t.tgname",
757 .catname =
"pg_catalog.pg_ts_config c",
758 .viscondition =
"pg_catalog.pg_ts_config_is_visible(c.oid)",
759 .namespace =
"c.cfgnamespace",
760 .result =
"c.cfgname",
764 .catname =
"pg_catalog.pg_ts_dict d",
765 .viscondition =
"pg_catalog.pg_ts_dict_is_visible(d.oid)",
766 .namespace =
"d.dictnamespace",
767 .result =
"d.dictname",
771 .catname =
"pg_catalog.pg_ts_parser p",
772 .viscondition =
"pg_catalog.pg_ts_parser_is_visible(p.oid)",
773 .namespace =
"p.prsnamespace",
774 .result =
"p.prsname",
778 .catname =
"pg_catalog.pg_ts_template t",
779 .viscondition =
"pg_catalog.pg_ts_template_is_visible(t.oid)",
780 .namespace =
"t.tmplnamespace",
781 .result =
"t.tmplname",
785 .catname =
"pg_catalog.pg_class c",
787 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
788 .namespace =
"c.relnamespace",
789 .result =
"c.relname",
793 .catname =
"pg_catalog.pg_class c",
795 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
796 .namespace =
"c.relnamespace",
797 .result =
"c.relname",
801 .catname =
"pg_catalog.pg_class c",
805 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
806 .namespace =
"c.relnamespace",
807 .result =
"c.relname",
811 .catname =
"pg_catalog.pg_class c",
813 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
814 .namespace =
"c.relnamespace",
815 .result =
"c.relname",
819 .catname =
"pg_catalog.pg_class c",
821 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
822 .namespace =
"c.relnamespace",
823 .result =
"pg_catalog.quote_ident(c.relname)",
829 .catname =
"pg_catalog.pg_class c",
830 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
831 .namespace =
"c.relnamespace",
832 .result =
"c.relname",
837 .catname =
"pg_catalog.pg_class c",
840 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
841 .namespace =
"c.relnamespace",
842 .result =
"c.relname",
846 .catname =
"pg_catalog.pg_opfamily c",
847 .viscondition =
"pg_catalog.pg_opfamily_is_visible(c.oid)",
848 .namespace =
"c.opfnamespace",
849 .result =
"c.opfname",
854 .catname =
"pg_catalog.pg_class c",
860 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
861 .namespace =
"c.relnamespace",
862 .result =
"c.relname",
867 .catname =
"pg_catalog.pg_class c",
872 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
873 .namespace =
"c.relnamespace",
874 .result =
"c.relname",
879 .catname =
"pg_catalog.pg_class c",
887 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
888 .namespace =
"c.relnamespace",
889 .result =
"c.relname",
894 .catname =
"pg_catalog.pg_class c",
899 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
900 .namespace =
"c.relnamespace",
901 .result =
"c.relname",
905#define Query_for_list_of_grantables Query_for_list_of_selectables
909 .catname =
"pg_catalog.pg_class c",
915 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
916 .namespace =
"c.relnamespace",
917 .result =
"c.relname",
926#define Query_for_list_of_tables_for_copy Query_for_list_of_analyzables
930 .catname =
"pg_catalog.pg_class c",
935 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
936 .namespace =
"c.relnamespace",
937 .result =
"c.relname",
944#define Query_for_list_of_vacuumables Query_for_list_of_indexables
948 .catname =
"pg_catalog.pg_class c",
953 .viscondition =
"pg_catalog.pg_table_is_visible(c.oid)",
954 .namespace =
"c.relnamespace",
955 .result =
"c.relname",
959 .catname =
"pg_catalog.pg_constraint c",
960 .selcondition =
"c.conrelid <> 0",
961 .namespace =
"c.connamespace",
962 .result =
"c.conname",
966 .catname =
"pg_catalog.pg_statistic_ext s",
967 .viscondition =
"pg_catalog.pg_statistics_obj_is_visible(s.oid)",
968 .namespace =
"s.stxnamespace",
969 .result =
"s.stxname",
973 .catname =
"pg_catalog.pg_collation c",
974 .selcondition =
"c.collencoding IN (-1, pg_catalog.pg_char_to_encoding(pg_catalog.getdatabaseencoding()))",
975 .viscondition =
"pg_catalog.pg_collation_is_visible(c.oid)",
976 .namespace =
"c.collnamespace",
977 .result =
"c.collname",
981 .catname =
"pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_inherits i",
982 .selcondition =
"c1.oid=i.inhparent and i.inhrelid=c2.oid and c2.relispartition",
983 .viscondition =
"pg_catalog.pg_table_is_visible(c2.oid)",
984 .namespace =
"c2.relnamespace",
985 .result =
"c2.relname",
986 .refname =
"c1.relname",
987 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
988 .refnamespace =
"c1.relnamespace",
992 .catname =
"pg_catalog.pg_rewrite r, pg_catalog.pg_class c1",
993 .selcondition =
"r.ev_class=c1.oid",
994 .result =
"r.rulename",
995 .refname =
"c1.relname",
996 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
997 .refnamespace =
"c1.relnamespace",
1001 .catname =
"pg_catalog.pg_trigger t, pg_catalog.pg_class c1",
1002 .selcondition =
"t.tgrelid=c1.oid and not t.tgisinternal",
1003 .result =
"t.tgname",
1004 .refname =
"c1.relname",
1005 .refviscondition =
"pg_catalog.pg_table_is_visible(c1.oid)",
1006 .refnamespace =
"c1.relnamespace",
1029#define Query_for_list_of_template_databases \
1031" FROM pg_catalog.pg_database d "\
1032" WHERE d.datname LIKE '%s' "\
1033" AND (d.datistemplate OR pg_catalog.pg_has_role(d.datdba, 'USAGE'))"
1035#define Query_for_list_of_databases \
1036"SELECT datname FROM pg_catalog.pg_database "\
1037" WHERE datname LIKE '%s'"
1039#define Query_for_list_of_database_vars \
1040"SELECT conf FROM ("\
1041" SELECT setdatabase, pg_catalog.split_part(pg_catalog.unnest(setconfig),'=',1) conf"\
1042" FROM pg_db_role_setting "\
1043" ) s, pg_database d "\
1044" WHERE s.setdatabase = d.oid "\
1045" AND conf LIKE '%s'"\
1046" AND d.datname LIKE '%s'"
1048#define Query_for_list_of_tablespaces \
1049"SELECT spcname FROM pg_catalog.pg_tablespace "\
1050" WHERE spcname LIKE '%s'"
1052#define Query_for_list_of_encodings \
1053" SELECT DISTINCT pg_catalog.pg_encoding_to_char(conforencoding) "\
1054" FROM pg_catalog.pg_conversion "\
1055" WHERE pg_catalog.pg_encoding_to_char(conforencoding) LIKE pg_catalog.upper('%s')"
1057#define Query_for_list_of_languages \
1059" FROM pg_catalog.pg_language "\
1060" WHERE lanname != 'internal' "\
1061" AND lanname LIKE '%s'"
1063#define Query_for_list_of_schemas \
1064"SELECT nspname FROM pg_catalog.pg_namespace "\
1065" WHERE nspname LIKE '%s'"
1068#define Query_for_list_of_alter_system_set_vars \
1069"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\
1070" WHERE context != 'internal' "\
1071" AND pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1073#define Query_for_list_of_set_vars \
1074"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\
1075" WHERE context IN ('user', 'superuser') "\
1076" AND pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1078#define Query_for_list_of_show_vars \
1079"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\
1080" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1082#define Query_for_list_of_roles \
1084" FROM pg_catalog.pg_roles "\
1085" WHERE rolname LIKE '%s'"
1088#define Keywords_for_list_of_owner_roles \
1089"CURRENT_ROLE", "CURRENT_USER", "SESSION_USER"
1092#define Keywords_for_list_of_grant_roles \
1093Keywords_for_list_of_owner_roles, "PUBLIC"
1095#define Query_for_all_table_constraints \
1097" FROM pg_catalog.pg_constraint c "\
1098" WHERE c.conrelid <> 0 "\
1099" and conname LIKE '%s'"
1101#define Query_for_list_of_fdws \
1103" FROM pg_catalog.pg_foreign_data_wrapper "\
1104" WHERE fdwname LIKE '%s'"
1106#define Query_for_list_of_servers \
1108" FROM pg_catalog.pg_foreign_server "\
1109" WHERE srvname LIKE '%s'"
1111#define Query_for_list_of_user_mappings \
1113" FROM pg_catalog.pg_user_mappings "\
1114" WHERE usename LIKE '%s'"
1116#define Query_for_list_of_user_vars \
1117"SELECT conf FROM ("\
1118" SELECT rolname, pg_catalog.split_part(pg_catalog.unnest(rolconfig),'=',1) conf"\
1119" FROM pg_catalog.pg_roles"\
1121" WHERE s.conf like '%s' "\
1122" AND s.rolname LIKE '%s'"
1124#define Query_for_list_of_access_methods \
1126" FROM pg_catalog.pg_am "\
1127" WHERE amname LIKE '%s'"
1129#define Query_for_list_of_index_access_methods \
1131" FROM pg_catalog.pg_am "\
1132" WHERE amname LIKE '%s' AND "\
1133" amtype=" CppAsString2(AMTYPE_INDEX)
1135#define Query_for_list_of_table_access_methods \
1137" FROM pg_catalog.pg_am "\
1138" WHERE amname LIKE '%s' AND "\
1139" amtype=" CppAsString2(AMTYPE_TABLE)
1141#define Query_for_list_of_extensions \
1143" FROM pg_catalog.pg_extension "\
1144" WHERE extname LIKE '%s'"
1146#define Query_for_list_of_available_extensions \
1148" FROM pg_catalog.pg_available_extensions "\
1149" WHERE name LIKE '%s' AND installed_version IS NULL"
1151#define Query_for_list_of_available_extension_versions \
1153" FROM pg_catalog.pg_available_extension_versions "\
1154" WHERE version LIKE '%s' AND name='%s'"
1156#define Query_for_list_of_prepared_statements \
1158" FROM pg_catalog.pg_prepared_statements "\
1159" WHERE name LIKE '%s'"
1161#define Query_for_list_of_event_triggers \
1163" FROM pg_catalog.pg_event_trigger "\
1164" WHERE evtname LIKE '%s'"
1166#define Query_for_list_of_tablesample_methods \
1168" FROM pg_catalog.pg_proc "\
1169" WHERE prorettype = 'pg_catalog.tsm_handler'::pg_catalog.regtype AND "\
1170" proargtypes[0] = 'pg_catalog.internal'::pg_catalog.regtype AND "\
1173#define Query_for_list_of_policies \
1175" FROM pg_catalog.pg_policy "\
1176" WHERE polname LIKE '%s'"
1178#define Query_for_values_of_enum_GUC \
1179" SELECT val FROM ( "\
1180" SELECT name, pg_catalog.unnest(enumvals) AS val "\
1181" FROM pg_catalog.pg_settings "\
1183" WHERE val LIKE '%s'"\
1184" and pg_catalog.lower(name)=pg_catalog.lower('%s')"
1186#define Query_for_list_of_channels \
1188" FROM pg_catalog.pg_listening_channels() AS channel "\
1189" WHERE channel LIKE '%s'"
1191#define Query_for_list_of_cursors \
1193" FROM pg_catalog.pg_cursors "\
1194" WHERE name LIKE '%s'"
1196#define Query_for_list_of_timezone_names_unquoted \
1198" FROM pg_catalog.pg_timezone_names() "\
1199" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1201#define Query_for_list_of_timezone_names_quoted_out \
1202"SELECT pg_catalog.quote_literal(name) AS name "\
1203" FROM pg_catalog.pg_timezone_names() "\
1204" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')"
1206#define Query_for_list_of_timezone_names_quoted_in \
1207"SELECT pg_catalog.quote_literal(name) AS name "\
1208" FROM pg_catalog.pg_timezone_names() "\
1209" WHERE pg_catalog.quote_literal(pg_catalog.lower(name)) LIKE pg_catalog.lower('%s')"
1212#define Privilege_options_of_grant_and_revoke \
1213"SELECT", "INSERT", "UPDATE", "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER", \
1214"CREATE", "CONNECT", "TEMPORARY", "EXECUTE", "USAGE", "SET", "ALTER SYSTEM", \
1218#define Alter_procedure_options \
1219"DEPENDS ON EXTENSION", "EXTERNAL SECURITY", "NO DEPENDS ON EXTENSION", \
1220"OWNER TO", "RENAME TO", "RESET", "SECURITY", "SET"
1223#define Alter_routine_options \
1224Alter_procedure_options, "COST", "IMMUTABLE", "LEAKPROOF", "NOT LEAKPROOF", \
1225"PARALLEL", "ROWS", "STABLE", "VOLATILE"
1228#define Alter_function_options \
1229Alter_routine_options, "CALLED ON NULL INPUT", "RETURNS NULL ON NULL INPUT", \
1233#define Copy_common_options \
1234"DELIMITER", "ENCODING", "ESCAPE", "FORMAT", "HEADER", "NULL", "QUOTE"
1237#define Copy_from_options \
1238Copy_common_options, "DEFAULT", "FORCE_NOT_NULL", "FORCE_NULL", "FREEZE", \
1239"LOG_VERBOSITY", "ON_ERROR", "REJECT_LIMIT"
1242#define Copy_to_options \
1243Copy_common_options, "FORCE_QUOTE", "FORCE_ARRAY"
1254 " FROM pg_catalog.pg_publication "
1255 " WHERE pubname LIKE '%s'"
1262 " SELECT s.subname "
1263 " FROM pg_catalog.pg_subscription s, pg_catalog.pg_database d "
1264 " WHERE s.subname LIKE '%s' "
1265 " AND d.datname = pg_catalog.current_database() "
1266 " AND s.subdbid = d.oid"
1273 "ABORT",
"ALTER",
"ANALYZE",
"BEGIN",
"CALL",
"CHECKPOINT",
"CLOSE",
"CLUSTER",
1274 "COMMENT",
"COMMIT",
"COPY",
"CREATE",
"DEALLOCATE",
"DECLARE",
1275 "DELETE FROM",
"DISCARD",
"DO",
"DROP",
"END",
"EXECUTE",
"EXPLAIN",
1276 "FETCH",
"GRANT",
"IMPORT FOREIGN SCHEMA",
"INSERT INTO",
"LISTEN",
"LOAD",
"LOCK",
1277 "MERGE INTO",
"MOVE",
"NOTIFY",
"PREPARE",
1278 "REASSIGN",
"REFRESH MATERIALIZED VIEW",
"REINDEX",
"RELEASE",
"REPACK",
1279 "RESET",
"REVOKE",
"ROLLBACK",
1280 "SAVEPOINT",
"SECURITY LABEL",
"SELECT",
"SET",
"SHOW",
"START",
1281 "TABLE",
"TRUNCATE",
"UNLISTEN",
"UPDATE",
"VACUUM",
"VALUES",
1302#define THING_NO_CREATE (1 << 0)
1303#define THING_NO_DROP (1 << 1)
1304#define THING_NO_ALTER (1 << 2)
1305#define THING_NO_SHOW (THING_NO_CREATE | THING_NO_DROP | THING_NO_ALTER)
1325 {
"CONVERSION",
"SELECT conname FROM pg_catalog.pg_conversion WHERE conname LIKE '%s'"},
1351 {
"RULE",
"SELECT rulename FROM pg_catalog.pg_rules WHERE rulename LIKE '%s'"},
1367 {
"TRIGGER",
"SELECT tgname FROM pg_catalog.pg_trigger WHERE tgname LIKE '%s' AND NOT tgisinternal"},
1397#define MatchAny NULL
1398#define MatchAnyExcept(pattern) ("!" pattern)
1407 const char *
const *words;
1411#define TCPAT(id, kind, ...) \
1412 { (id), (kind), VA_ARGS_NARGS(__VA_ARGS__), \
1413 (const char * const []) { __VA_ARGS__ } }
1415#ifdef SWITCH_CONVERSION_APPLIED
1426 "autovacuum_analyze_scale_factor",
1427 "autovacuum_analyze_threshold",
1428 "autovacuum_enabled",
1429 "autovacuum_freeze_max_age",
1430 "autovacuum_freeze_min_age",
1431 "autovacuum_freeze_table_age",
1432 "autovacuum_multixact_freeze_max_age",
1433 "autovacuum_multixact_freeze_min_age",
1434 "autovacuum_multixact_freeze_table_age",
1435 "autovacuum_parallel_workers",
1436 "autovacuum_vacuum_cost_delay",
1437 "autovacuum_vacuum_cost_limit",
1438 "autovacuum_vacuum_insert_scale_factor",
1439 "autovacuum_vacuum_insert_threshold",
1440 "autovacuum_vacuum_max_threshold",
1441 "autovacuum_vacuum_scale_factor",
1442 "autovacuum_vacuum_threshold",
1444 "log_autovacuum_min_duration",
1445 "log_autoanalyze_min_duration",
1447 "toast.autovacuum_enabled",
1448 "toast.autovacuum_freeze_max_age",
1449 "toast.autovacuum_freeze_min_age",
1450 "toast.autovacuum_freeze_table_age",
1451 "toast.autovacuum_multixact_freeze_max_age",
1452 "toast.autovacuum_multixact_freeze_min_age",
1453 "toast.autovacuum_multixact_freeze_table_age",
1454 "toast.autovacuum_vacuum_cost_delay",
1455 "toast.autovacuum_vacuum_cost_limit",
1456 "toast.autovacuum_vacuum_insert_scale_factor",
1457 "toast.autovacuum_vacuum_insert_threshold",
1458 "toast.autovacuum_vacuum_max_threshold",
1459 "toast.autovacuum_vacuum_scale_factor",
1460 "toast.autovacuum_vacuum_threshold",
1461 "toast.log_autovacuum_min_duration",
1462 "toast.vacuum_index_cleanup",
1463 "toast.vacuum_max_eager_freeze_failure_rate",
1464 "toast.vacuum_truncate",
1465 "toast_tuple_target",
1466 "user_catalog_table",
1467 "vacuum_index_cleanup",
1468 "vacuum_max_eager_freeze_failure_rate",
1504 int *
maxvars,
const char *varname,
1505 const char *prefix,
const char *suffix);
1507 const char *prefix,
const char *suffix,
bool need_value);
1526#ifdef USE_FILENAME_QUOTING_FUNCTIONS
1541#ifdef USE_FILENAME_QUOTING_FUNCTIONS
1563#ifdef HAVE_RL_FILENAME_QUOTE_CHARACTERS
1567 for (
int i = 0;
i < 255;
i++)
1568 fqc[
i] = (
unsigned char) (
i + 1);
1600 bool case_sensitive)
1604#define cimatch(s1, s2, n) \
1605 (case_sensitive ? strncmp(s1, s2, n) == 0 : pg_strncasecmp(s1, s2, n) == 0)
1608 if (pattern ==
NULL)
1612 if (*pattern ==
'!')
1624 while (*
c !=
'\0' && *
c !=
'|')
1645 if (wordlen == (
c - pattern) &&
1669 int narg,
const char *
const *args)
1719 int narg,
const char *
const *args)
1772 int narg,
const char *
const *args)
1856 size_t length =
strlen(s);
1858 return (length > 0 && s[length - 1] ==
c);
1891#define prev_wd (previous_words[0])
1892#define prev2_wd (previous_words[1])
1893#define prev3_wd (previous_words[2])
1894#define prev4_wd (previous_words[3])
1895#define prev5_wd (previous_words[4])
1896#define prev6_wd (previous_words[5])
1897#define prev7_wd (previous_words[6])
1898#define prev8_wd (previous_words[7])
1899#define prev9_wd (previous_words[8])
1902#define TailMatches(...) \
1903 TailMatchesImpl(false, previous_words_count, previous_words, \
1904 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1907#define TailMatchesCS(...) \
1908 TailMatchesImpl(true, previous_words_count, previous_words, \
1909 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1912#define Matches(...) \
1913 MatchesImpl(false, previous_words_count, previous_words, \
1914 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1917#define MatchesCS(...) \
1918 MatchesImpl(true, previous_words_count, previous_words, \
1919 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1922#define HeadMatches(...) \
1923 HeadMatchesImpl(false, previous_words_count, previous_words, \
1924 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1927#define HeadMatchesCS(...) \
1928 HeadMatchesImpl(true, previous_words_count, previous_words, \
1929 VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
1934 "\\bind",
"\\bind_named",
1935 "\\connect",
"\\conninfo",
"\\C",
"\\cd",
"\\close_prepared",
"\\copy",
1936 "\\copyright",
"\\crosstabview",
1937 "\\d",
"\\da",
"\\dA",
"\\dAc",
"\\dAf",
"\\dAo",
"\\dAp",
1938 "\\db",
"\\dc",
"\\dconfig",
"\\dC",
"\\dd",
"\\ddp",
"\\dD",
1939 "\\des",
"\\det",
"\\deu",
"\\dew",
"\\dE",
"\\df",
1940 "\\dF",
"\\dFd",
"\\dFp",
"\\dFt",
"\\dg",
"\\di",
"\\dl",
"\\dL",
1941 "\\dm",
"\\dn",
"\\do",
"\\dO",
"\\dp",
"\\dP",
"\\dPi",
"\\dPt",
1942 "\\drds",
"\\drg",
"\\dRs",
"\\dRp",
"\\ds",
1943 "\\dt",
"\\dT",
"\\dv",
"\\du",
"\\dx",
"\\dX",
"\\dy",
1944 "\\echo",
"\\edit",
"\\ef",
"\\elif",
"\\else",
"\\encoding",
1945 "\\endif",
"\\endpipeline",
"\\errverbose",
"\\ev",
1946 "\\f",
"\\flush",
"\\flushrequest",
1947 "\\g",
"\\gdesc",
"\\getenv",
"\\getresults",
"\\gexec",
"\\gset",
"\\gx",
1949 "\\if",
"\\include",
"\\include_relative",
"\\ir",
1950 "\\list",
"\\lo_import",
"\\lo_export",
"\\lo_list",
"\\lo_unlink",
1952 "\\parse",
"\\password",
"\\print",
"\\prompt",
"\\pset",
1953 "\\qecho",
"\\quit",
1954 "\\reset",
"\\restrict",
1955 "\\s",
"\\sendpipeline",
"\\set",
"\\setenv",
"\\sf",
1956 "\\startpipeline",
"\\sv",
"\\syncpipeline",
1957 "\\t",
"\\T",
"\\timing",
1958 "\\unrestrict",
"\\unset",
1960 "\\warn",
"\\watch",
"\\write",
1998 if (
text[0] ==
'\\')
2002 else if (
text[0] ==
':' &&
text[1] !=
':')
2004 if (
text[1] ==
'\'')
2006 else if (
text[1] ==
'"')
2008 else if (
text[1] ==
'{' &&
text[2] ==
'?')
2021#ifdef SWITCH_CONVERSION_APPLIED
2039 switch (
tcpat->kind)
2114 else if (
wac->vquery)
2117 else if (
wac->squery)
2135#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
2214 COMPLETE_WITH(
"AGGREGATE",
"COLLATION",
"DOMAIN",
"FUNCTION",
2215 "INDEX",
"OPERATOR",
"PROCEDURE",
"SEQUENCE",
"TABLE",
2216 "TEXT SEARCH CONFIGURATION",
"TEXT SEARCH DICTIONARY",
2217 "TEXT SEARCH PARSER",
"TEXT SEARCH TEMPLATE",
2218 "TRIGGER",
"TYPE",
"VIEW",
2220 "UNIQUE",
"UNLOGGED");
2226 COMPLETE_WITH(
"FUNCTION",
"PROCEDURE",
"LANGUAGE",
"RULE",
"VIEW",
2227 "AGGREGATE",
"TRANSFORM",
"TRIGGER");
2237 else if (
Matches(
"ALTER",
"TABLE"))
2239 "ALL IN TABLESPACE");
2254 else if (
Matches(
"ALTER",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
2306 COMPLETE_WITH(
"ADD",
"DROP",
"OWNER TO",
"RENAME TO",
"SET");
2310 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"ADD|SET",
"TABLE"))
2337 COMPLETE_WITH(
"(",
"ALL SEQUENCES",
"ALL TABLES",
"TABLES IN SCHEMA",
"TABLE");
2340 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES"))
2342 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT"))
2344 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"("))
2347 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
2349 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
2351 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"SET",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
2353 else if (
Matches(
"ALTER",
"PUBLICATION",
MatchAny,
"ADD|DROP|SET",
"TABLES",
"IN",
"SCHEMA"))
2355 " AND nspname NOT LIKE E'pg\\\\_%%'",
2359 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
2362 COMPLETE_WITH(
"CONNECTION",
"ENABLE",
"DISABLE",
"OWNER TO",
2363 "RENAME TO",
"REFRESH PUBLICATION",
"REFRESH SEQUENCES",
2364 "SERVER",
"SET",
"SKIP (",
"ADD PUBLICATION",
"DROP PUBLICATION");
2379 "max_retention_duration",
"origin",
2380 "password_required",
"retain_dead_tuples",
2381 "run_as_owner",
"slot_name",
"streaming",
2382 "synchronous_commit",
"two_phase");
2393 "ADD|DROP|SET",
"PUBLICATION",
MatchAny))
2397 "ADD|DROP|SET",
"PUBLICATION",
MatchAny,
"WITH",
"("))
2406 COMPLETE_WITH(
"OWNER TO",
"REFRESH VERSION",
"RENAME TO",
"SET SCHEMA");
2414 COMPLETE_WITH(
"RESET",
"SET",
"OWNER TO",
"REFRESH COLLATION VERSION",
"RENAME TO",
2415 "IS_TEMPLATE",
"ALLOW_CONNECTIONS",
2416 "CONNECTION LIMIT");
2430 else if (
Matches(
"ALTER",
"EVENT",
"TRIGGER"))
2435 COMPLETE_WITH(
"DISABLE",
"ENABLE",
"OWNER TO",
"RENAME TO");
2447 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
2448 "CONVERSION",
"DOMAIN",
"EVENT TRIGGER",
"FOREIGN",
2449 "FUNCTION",
"MATERIALIZED VIEW",
"OPERATOR",
2450 "LANGUAGE",
"PROCEDURE",
"ROUTINE",
"SCHEMA",
2451 "SEQUENCE",
"SERVER",
"TABLE",
"TEXT SEARCH",
2452 "TRANSFORM FOR",
"TYPE",
"VIEW");
2455 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"FOREIGN"))
2459 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"OPERATOR"))
2463 else if (
Matches(
"ALTER",
"EXTENSION",
MatchAny,
"ADD|DROP",
"TEXT",
"SEARCH"))
2464 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
2478 else if (
Matches(
"ALTER",
"FOREIGN"))
2484 "OPTIONS",
"OWNER TO",
"RENAME TO",
"VALIDATOR");
2485 else if (
Matches(
"ALTER",
"FOREIGN",
"DATA",
"WRAPPER",
MatchAny,
"NO"))
2490 COMPLETE_WITH(
"ADD",
"ALTER",
"DISABLE TRIGGER",
"DROP",
"ENABLE",
2491 "INHERIT",
"NO INHERIT",
"OPTIONS",
"OWNER TO",
2492 "RENAME",
"SET",
"VALIDATE CONSTRAINT");
2495 else if (
Matches(
"ALTER",
"INDEX"))
2497 "ALL IN TABLESPACE");
2500 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME TO",
"SET",
2501 "RESET",
"ATTACH PARTITION",
2502 "DEPENDS ON EXTENSION",
"NO DEPENDS ON EXTENSION");
2536 "deduplicate_items",
2537 "fastupdate",
"gin_pending_list_limit",
2539 "pages_per_range",
"autosummarize"
2543 "deduplicate_items =",
2544 "fastupdate =",
"gin_pending_list_limit =",
2546 "pages_per_range =",
"autosummarize ="
2562 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW"))
2564 "ALL IN TABLESPACE");
2569 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2570 "ENCRYPTED PASSWORD",
"IN",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2571 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2572 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2573 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2574 "VALID UNTIL",
"WITH");
2598 COMPLETE_WITH(
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
"CREATEROLE",
2599 "ENCRYPTED PASSWORD",
"INHERIT",
"LOGIN",
"NOBYPASSRLS",
2600 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
2601 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
2602 "RENAME TO",
"REPLICATION",
"RESET",
"SET",
"SUPERUSER",
2606 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
2609 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR"))
2612 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN"))
2615 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2619 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2623 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2628 else if (
Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"FOR",
"ROLE|USER",
2630 Matches(
"ALTER",
"DEFAULT",
"PRIVILEGES",
"IN",
"SCHEMA",
2636 "VALIDATE CONSTRAINT");
2647 else if (
Matches(
"ALTER",
"DOMAIN",
MatchAny,
"DROP|RENAME|VALIDATE",
"CONSTRAINT"))
2664 COMPLETE_WITH(
"AS",
"INCREMENT",
"MINVALUE",
"MAXVALUE",
"RESTART",
2665 "START",
"NO",
"CACHE",
"CYCLE",
"SET",
"OWNED BY",
2666 "OWNER TO",
"RENAME TO");
2678 COMPLETE_WITH(
"VERSION",
"OPTIONS",
"OWNER TO",
"RENAME TO");
2683 else if (
Matches(
"ALTER",
"SYSTEM"))
2685 else if (
Matches(
"ALTER",
"SYSTEM",
"SET|RESET"))
2692 COMPLETE_WITH(
"ALTER COLUMN",
"OWNER TO",
"RENAME",
"RESET",
"SET");
2696 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2719 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"check_option",
"="))
2721 else if (
Matches(
"ALTER",
"VIEW",
MatchAny,
"SET",
"(",
"security_barrier|security_invoker",
"="))
2726 COMPLETE_WITH(
"ALTER COLUMN",
"CLUSTER ON",
"DEPENDS ON EXTENSION",
2727 "NO DEPENDS ON EXTENSION",
"OWNER TO",
"RENAME",
2730 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"RENAME"))
2732 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2742 COMPLETE_WITH(
"(",
"ACCESS METHOD",
"SCHEMA",
"TABLESPACE",
"WITHOUT CLUSTER");
2744 else if (
Matches(
"ALTER",
"MATERIALIZED",
"VIEW",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
2748 else if (
Matches(
"ALTER",
"POLICY"))
2761 COMPLETE_WITH(
"RENAME TO",
"TO",
"USING (",
"WITH CHECK (");
2774 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH"))
2777 COMPLETE_WITH(
"ADD",
"ALTER",
"DROP",
"OWNER TO",
"RENAME TO",
"SET SCHEMA");
2778 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|ALTER|DROP"))
2780 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ADD|DROP",
"VERTEX|EDGE"))
2784 else if (
Matches(
"ALTER",
"PROPERTY",
"GRAPH",
MatchAny,
"ALTER",
"VERTEX|EDGE"))
2804 COMPLETE_WITH(
"OWNER TO",
"RENAME TO",
"SET SCHEMA",
"SET STATISTICS");
2822 "NO DEPENDS ON EXTENSION");
2828 COMPLETE_WITH(
"ADD",
"ALTER",
"CLUSTER ON",
"DISABLE",
"DROP",
2829 "ENABLE",
"INHERIT",
"NO",
"RENAME",
"RESET",
2830 "OWNER TO",
"SET",
"VALIDATE CONSTRAINT",
2831 "REPLICA IDENTITY",
"ATTACH PARTITION",
2832 "DETACH PARTITION",
"FORCE ROW LEVEL SECURITY",
2833 "SPLIT PARTITION",
"MERGE PARTITIONS (",
2841 COMPLETE_WITH(
"COLUMN",
"CONSTRAINT",
"CHECK (",
"NOT NULL",
"UNIQUE",
2842 "PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2850 COMPLETE_WITH(
"CHECK (",
"NOT NULL",
"UNIQUE",
"PRIMARY KEY",
"EXCLUDE",
"FOREIGN KEY");
2857 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY") ||
2863 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"PRIMARY",
"KEY",
"USING",
"INDEX"))
2869 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ADD",
"UNIQUE",
"USING",
"INDEX"))
2876 "PRIMARY",
"KEY",
"USING",
"INDEX"))
2883 "UNIQUE",
"USING",
"INDEX"))
2890 COMPLETE_WITH(
"ALWAYS",
"REPLICA",
"ROW LEVEL SECURITY",
"RULE",
2892 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ENABLE",
"REPLICA|ALWAYS"))
2944 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|RENAME",
"COLUMN"))
2962 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"ALTER|DROP|RENAME",
"CONSTRAINT"))
2968 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"VALIDATE",
"CONSTRAINT"))
2976 COMPLETE_WITH(
"TYPE",
"SET",
"RESET",
"RESTART",
"ADD",
"DROP");
2994 COMPLETE_WITH(
"(",
"COMPRESSION",
"DATA TYPE",
"DEFAULT",
"EXPRESSION",
"GENERATED",
"NOT NULL",
2995 "STATISTICS",
"STORAGE",
2997 "INCREMENT",
"MINVALUE",
"MAXVALUE",
"START",
"NO",
"CACHE",
"CYCLE");
3025 COMPLETE_WITH(
"DEFAULT",
"PLAIN",
"EXTERNAL",
"EXTENDED",
"MAIN");
3035 COMPLETE_WITH(
"DEFAULT",
"EXPRESSION",
"IDENTITY",
"NOT NULL");
3046 "TABLESPACE",
"UNLOGGED",
"WITH",
"WITHOUT");
3052 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"SET",
"ACCESS",
"METHOD"))
3071 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING",
"INDEX"))
3076 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"REPLICA",
"IDENTITY",
"USING"))
3099 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"DETACH|SPLIT",
"PARTITION"))
3112 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"("))
3117 else if (
Matches(
"ALTER",
"TABLE",
MatchAny,
"MERGE",
"PARTITIONS",
"(*)"))
3133 "effective_io_concurrency",
"maintenance_io_concurrency");
3136 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH"))
3137 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3138 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"TEMPLATE|PARSER",
MatchAny))
3142 else if (
Matches(
"ALTER",
"TEXT",
"SEARCH",
"CONFIGURATION",
MatchAny))
3145 "OWNER TO",
"RENAME TO",
"SET SCHEMA");
3149 COMPLETE_WITH(
"ADD ATTRIBUTE",
"ADD VALUE",
"ALTER ATTRIBUTE",
3151 "OWNER TO",
"RENAME",
"SET SCHEMA",
"SET (");
3169 else if (
Matches(
"ALTER",
"TYPE",
MatchAny,
"ALTER|DROP|RENAME",
"ATTRIBUTE"))
3194 COMPLETE_WITH(
"ANALYZE",
"RECEIVE",
"SEND",
"STORAGE",
"SUBSCRIPT",
3195 "TYPMOD_IN",
"TYPMOD_OUT");
3213 "(",
"VERBOSE",
"ONLY");
3214 else if (
Matches(
"ANALYZE",
"VERBOSE"))
3226 COMPLETE_WITH(
"VERBOSE",
"SKIP_LOCKED",
"BUFFER_USAGE_LIMIT");
3230 else if (
Matches(
"ANALYZE",
"(*)"))
3241 COMPLETE_WITH(
"WORK",
"TRANSACTION",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
3243 else if (
Matches(
"END|ABORT"))
3253 COMPLETE_WITH(
"AND",
"WORK",
"TRANSACTION",
"TO SAVEPOINT",
"PREPARED");
3254 else if (
Matches(
"ABORT|END|COMMIT|ROLLBACK",
"AND"))
3262 else if (
Matches(
"CHECKPOINT"))
3285 else if (
Matches(
"CLUSTER",
"VERBOSE") ||
3316 else if (
Matches(
"COMMENT",
"ON"))
3317 COMPLETE_WITH(
"ACCESS METHOD",
"AGGREGATE",
"CAST",
"COLLATION",
3318 "COLUMN",
"CONSTRAINT",
"CONVERSION",
"DATABASE",
3319 "DOMAIN",
"EXTENSION",
"EVENT TRIGGER",
3320 "FOREIGN DATA WRAPPER",
"FOREIGN TABLE",
3321 "FUNCTION",
"INDEX",
"LANGUAGE",
"LARGE OBJECT",
3322 "MATERIALIZED VIEW",
"OPERATOR",
"POLICY",
3323 "PROCEDURE",
"PROCEDURAL LANGUAGE",
"PROPERTY GRAPH",
"PUBLICATION",
"ROLE",
3324 "ROUTINE",
"RULE",
"SCHEMA",
"SEQUENCE",
"SERVER",
3325 "STATISTICS",
"SUBSCRIPTION",
"TABLE",
3326 "TABLESPACE",
"TEXT SEARCH",
"TRANSFORM FOR",
3327 "TRIGGER",
"TYPE",
"VIEW");
3328 else if (
Matches(
"COMMENT",
"ON",
"ACCESS",
"METHOD"))
3330 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT"))
3340 else if (
Matches(
"COMMENT",
"ON",
"CONSTRAINT",
MatchAny,
"ON",
"DOMAIN"))
3342 else if (
Matches(
"COMMENT",
"ON",
"EVENT",
"TRIGGER"))
3344 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN"))
3346 else if (
Matches(
"COMMENT",
"ON",
"FOREIGN",
"TABLE"))
3348 else if (
Matches(
"COMMENT",
"ON",
"MATERIALIZED",
"VIEW"))
3350 else if (
Matches(
"COMMENT",
"ON",
"POLICY"))
3359 else if (
Matches(
"COMMENT",
"ON",
"PROCEDURAL",
"LANGUAGE"))
3361 else if (
Matches(
"COMMENT",
"ON",
"PROPERTY",
"GRAPH"))
3370 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH"))
3371 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3372 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"CONFIGURATION"))
3374 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"DICTIONARY"))
3376 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"PARSER"))
3378 else if (
Matches(
"COMMENT",
"ON",
"TEXT",
"SEARCH",
"TEMPLATE"))
3380 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR"))
3384 else if (
Matches(
"COMMENT",
"ON",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3408 else if (
Matches(
"COPY|\\copy"))
3411 else if (
Matches(
"COPY|\\copy",
"("))
3412 COMPLETE_WITH(
"SELECT",
"TABLE",
"VALUES",
"INSERT INTO",
"UPDATE",
"DELETE FROM",
"MERGE INTO",
"WITH");
3522 "PROVIDER =",
"DETERMINISTIC =");
3531 COMPLETE_WITH(
"OWNER",
"TEMPLATE",
"ENCODING",
"TABLESPACE",
3532 "IS_TEMPLATE",
"STRATEGY",
3533 "ALLOW_CONNECTIONS",
"CONNECTION LIMIT",
3534 "LC_COLLATE",
"LC_CTYPE",
"LOCALE",
"OID",
3535 "LOCALE_PROVIDER",
"ICU_LOCALE");
3549 "NOT NULL",
"NULL",
"CHECK (");
3555 else if (
Matches(
"CREATE",
"EXTENSION"))
3568 else if (
Matches(
"CREATE",
"FOREIGN"))
3573 COMPLETE_WITH(
"CONNECTION",
"HANDLER",
"OPTIONS",
"VALIDATOR");
3590 "ON",
"CONCURRENTLY");
3604 else if (
TailMatches(
"CREATE|UNIQUE",
"INDEX",
"CONCURRENTLY"))
3636 else if (
Matches(
"CREATE",
"OR"))
3648 COMPLETE_WITH(
"AS",
"FOR",
"TO",
"USING (",
"WITH CHECK (");
3661 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3684 COMPLETE_WITH(
"ALL",
"SELECT",
"INSERT",
"UPDATE",
"DELETE");
3723 else if (
Matches(
"CREATE",
"PROPERTY"))
3727 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE"))
3729 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES"))
3731 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"("))
3733 else if (
Matches(
"CREATE",
"PROPERTY",
"GRAPH",
MatchAny,
"VERTEX|NODE",
"TABLES",
"(*)"))
3744 COMPLETE_WITH(
"FOR TABLE",
"FOR TABLES IN SCHEMA",
"FOR ALL TABLES",
"FOR ALL SEQUENCES",
"WITH (");
3746 COMPLETE_WITH(
"TABLE",
"TABLES IN SCHEMA",
"ALL TABLES",
"ALL SEQUENCES");
3749 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES"))
3751 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT"))
3753 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"("))
3755 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE"))
3757 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) &&
ends_with(
prev_wd,
','))
3759 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"ALL",
"TABLES",
"EXCEPT",
"(",
"TABLE",
MatchAnyN) && !
ends_with(
prev_wd,
','))
3783 else if (
Matches(
"CREATE",
"PUBLICATION",
MatchAny,
"FOR",
"TABLES",
"IN",
"SCHEMA"))
3785 " AND nspname NOT LIKE E'pg\\\\_%%'",
3791 COMPLETE_WITH(
"publish",
"publish_generated_columns",
"publish_via_partition_root");
3811 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE"))
3814 else if (
TailMatches(
"AS",
"ON",
"SELECT|UPDATE|INSERT|DELETE",
"TO"))
3818 else if (
Matches(
"CREATE",
"SCHEMA"))
3821 else if (
Matches(
"CREATE",
"SCHEMA",
"AUTHORIZATION") ||
3834 COMPLETE_WITH(
"AS",
"INCREMENT BY",
"MINVALUE",
"MAXVALUE",
"NO",
3835 "CACHE",
"CYCLE",
"OWNED BY",
"START WITH");
3886 COMPLETE_WITH(
"EXECUTE",
"SELECT",
"TABLE",
"VALUES",
"WITH");
3889 COMPLETE_WITH(
"AS",
"INHERITS (",
"PARTITION BY",
"USING",
"TABLESPACE",
"WITH (");
3891 COMPLETE_WITH(
"AS",
"INHERITS (",
"USING",
"TABLESPACE",
"WITH (");
3893 COMPLETE_WITH(
"AS",
"INHERITS (",
"ON COMMIT",
"PARTITION BY",
"USING",
3894 "TABLESPACE",
"WITH (");
3904 else if (
TailMatches(
"CREATE",
"TEMP|TEMPORARY",
"TABLE",
MatchAny,
"(*)",
"ON",
"COMMIT"))
3916 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
3917 else if (
TailMatches(
"CREATE",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
3921 else if (
Matches(
"CREATE",
"TRANSFORM") ||
3922 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM"))
3924 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR") ||
3925 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR"))
3930 else if (
Matches(
"CREATE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE") ||
3931 Matches(
"CREATE",
"OR",
"REPLACE",
"TRANSFORM",
"FOR",
MatchAny,
"LANGUAGE"))
3960 COMPLETE_WITH(
"binary",
"connect",
"copy_data",
"create_slot",
3961 "disable_on_error",
"enabled",
"failover",
3962 "max_retention_duration",
"origin",
3963 "password_required",
"retain_dead_tuples",
3964 "run_as_owner",
"slot_name",
"streaming",
3965 "synchronous_commit",
"two_phase");
4022 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4025 "REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4032 "INITIALLY",
"IMMEDIATE|DEFERRED") ||
4034 "INITIALLY",
"IMMEDIATE|DEFERRED"))
4037 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4039 COMPLETE_WITH(
"REFERENCING",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4047 "OLD|NEW",
"TABLE") ||
4049 "OLD|NEW",
"TABLE"))
4052 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4054 "REFERENCING",
"OLD",
"TABLE",
"AS",
MatchAny) ||
4056 "REFERENCING",
"OLD",
"TABLE",
MatchAny) ||
4058 "REFERENCING",
"OLD",
"TABLE",
MatchAny))
4061 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4063 COMPLETE_WITH(
"NEW TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4066 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4068 "REFERENCING",
"NEW",
"TABLE",
"AS",
MatchAny) ||
4070 "REFERENCING",
"NEW",
"TABLE",
MatchAny) ||
4072 "REFERENCING",
"NEW",
"TABLE",
MatchAny))
4075 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE FUNCTION");
4077 COMPLETE_WITH(
"OLD TABLE",
"FOR",
"WHEN (",
"EXECUTE PROCEDURE");
4080 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4082 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4084 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4086 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
"AS",
MatchAny) ||
4088 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4090 "REFERENCING",
"OLD|NEW",
"TABLE",
"AS",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4092 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny) ||
4094 "REFERENCING",
"OLD|NEW",
"TABLE",
MatchAny,
"OLD|NEW",
"TABLE",
MatchAny))
4112 "FOR",
"EACH",
"ROW|STATEMENT") ||
4114 "FOR",
"EACH",
"ROW|STATEMENT") ||
4116 "FOR",
"ROW|STATEMENT") ||
4118 "FOR",
"ROW|STATEMENT"))
4151 "EXECUTE",
"FUNCTION|PROCEDURE") ||
4153 "EXECUTE",
"FUNCTION|PROCEDURE"))
4159 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4160 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4161 "LOGIN",
"NOBYPASSRLS",
4162 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4163 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4164 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4165 "VALID UNTIL",
"WITH");
4170 COMPLETE_WITH(
"ADMIN",
"BYPASSRLS",
"CONNECTION LIMIT",
"CREATEDB",
4171 "CREATEROLE",
"ENCRYPTED PASSWORD",
"IN",
"INHERIT",
4172 "LOGIN",
"NOBYPASSRLS",
4173 "NOCREATEDB",
"NOCREATEROLE",
"NOINHERIT",
4174 "NOLOGIN",
"NOREPLICATION",
"NOSUPERUSER",
"PASSWORD",
4175 "REPLICATION",
"ROLE",
"SUPERUSER",
"SYSID",
4200 "TYPMOD_IN",
"TYPMOD_OUT",
"ANALYZE",
"SUBSCRIPT",
4201 "INTERNALLENGTH",
"PASSEDBYVALUE",
"ALIGNMENT",
4202 "STORAGE",
"LIKE",
"CATEGORY",
"PREFERRED",
4203 "DEFAULT",
"ELEMENT",
"DELIMITER",
4214 "CANONICAL",
"SUBTYPE_DIFF",
4215 "MULTIRANGE_TYPE_NAME");
4242 TailMatches(
"CREATE",
"OR",
"REPLACE",
"VIEW",
MatchAny,
"WITH",
"(",
"check_option",
"="))
4254 else if (
Matches(
"CREATE",
"MATERIALIZED"))
4264 else if (
Matches(
"CREATE",
"MATERIALIZED",
"VIEW",
MatchAny,
"USING"))
4279 else if (
Matches(
"CREATE",
"EVENT"))
4286 COMPLETE_WITH(
"ddl_command_start",
"ddl_command_end",
"login",
4287 "sql_drop",
"table_rewrite");
4308 else if (
Matches(
"CREATE",
"EVENT",
"TRIGGER",
MatchAnyN,
"EXECUTE",
"FUNCTION|PROCEDURE"))
4312 else if (
Matches(
"DEALLOCATE"))
4323 COMPLETE_WITH(
"BINARY",
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
4334 COMPLETE_WITH(
"ASENSITIVE",
"INSENSITIVE",
"SCROLL",
"NO SCROLL",
"CURSOR");
4381 "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|PUBLICATION|SCHEMA|SEQUENCE|SERVER|SUBSCRIPTION|STATISTICS|TABLE|TYPE|VIEW",
4387 Matches(
"DROP",
"TEXT",
"SEARCH",
"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE",
MatchAny))
4394 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny))
4396 else if (
Matches(
"DROP",
"AGGREGATE|FUNCTION|PROCEDURE|ROUTINE",
MatchAny,
"("))
4398 else if (
Matches(
"DROP",
"FOREIGN"))
4406 else if (
Matches(
"DROP",
"INDEX"))
4409 else if (
Matches(
"DROP",
"INDEX",
"CONCURRENTLY"))
4417 else if (
Matches(
"DROP",
"MATERIALIZED"))
4419 else if (
Matches(
"DROP",
"MATERIALIZED",
"VIEW"))
4425 else if (
Matches(
"DROP",
"OWNED"))
4427 else if (
Matches(
"DROP",
"OWNED",
"BY"))
4433 else if (
Matches(
"DROP",
"TEXT",
"SEARCH"))
4434 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
4448 else if (
Matches(
"DROP",
"ACCESS"))
4450 else if (
Matches(
"DROP",
"ACCESS",
"METHOD"))
4454 else if (
Matches(
"DROP",
"EVENT"))
4456 else if (
Matches(
"DROP",
"EVENT",
"TRIGGER"))
4460 else if (
Matches(
"DROP",
"POLICY"))
4475 else if (
Matches(
"DROP",
"PROPERTY"))
4477 else if (
Matches(
"DROP",
"PROPERTY",
"GRAPH"))
4492 else if (
Matches(
"DROP",
"TRANSFORM"))
4494 else if (
Matches(
"DROP",
"TRANSFORM",
"FOR"))
4515 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4516 "MERGE INTO",
"EXECUTE",
"ANALYZE",
"VERBOSE");
4526 COMPLETE_WITH(
"ANALYZE",
"VERBOSE",
"COSTS",
"SETTINGS",
"GENERIC_PLAN",
4527 "BUFFERS",
"SERIALIZE",
"WAL",
"TIMING",
"SUMMARY",
4528 "MEMORY",
"FORMAT");
4529 else if (
TailMatches(
"ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY|MEMORY"))
4536 else if (
Matches(
"EXPLAIN",
"ANALYZE"))
4537 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4538 "MERGE INTO",
"EXECUTE",
"VERBOSE");
4539 else if (
Matches(
"EXPLAIN",
"(*)") ||
4540 Matches(
"EXPLAIN",
"VERBOSE") ||
4541 Matches(
"EXPLAIN",
"ANALYZE",
"VERBOSE"))
4542 COMPLETE_WITH(
"SELECT",
"INSERT INTO",
"DELETE FROM",
"UPDATE",
"DECLARE",
4543 "MERGE INTO",
"EXECUTE");
4551 else if (
Matches(
"FETCH|MOVE"))
4569 else if (
Matches(
"FETCH|MOVE",
"BACKWARD|FORWARD"))
4580 else if (
Matches(
"FETCH|MOVE",
"ABSOLUTE|BACKWARD|FORWARD|RELATIVE",
4582 Matches(
"FETCH|MOVE",
"ALL|NEXT|PRIOR|FIRST|LAST"))
4592 else if (
TailMatches(
"FOREIGN",
"DATA",
"WRAPPER") &&
4614 TailMatches(
"REVOKE",
"ADMIN|GRANT|INHERIT|SET",
"OPTION",
"FOR"))
4620 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4625 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4626 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL");
4629 "DELETE",
"TRUNCATE",
"REFERENCES",
"TRIGGER",
4630 "CREATE",
"EXECUTE",
"USAGE",
"MAINTAIN",
"ALL",
4631 "GRANT OPTION FOR");
4641 "INHERIT OPTION FOR",
4643 else if (
TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR"))
4645 else if (
TailMatches(
"REVOKE",
"ADMIN|INHERIT|SET",
"OPTION",
"FOR"))
4650 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER"))
4656 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"SET") ||
4658 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
"ALTER",
"SYSTEM"))
4684 if (
TailMatches(
"SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|MAINTAIN|ALL"))
4706 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4707 COMPLETE_WITH(
"TABLES",
"SEQUENCES",
"FUNCTIONS",
"PROCEDURES",
"ROUTINES",
"TYPES",
"SCHEMAS",
"LARGE OBJECTS");
4710 "ALL FUNCTIONS IN SCHEMA",
4711 "ALL PROCEDURES IN SCHEMA",
4712 "ALL ROUTINES IN SCHEMA",
4713 "ALL SEQUENCES IN SCHEMA",
4714 "ALL TABLES IN SCHEMA",
4717 "FOREIGN DATA WRAPPER",
4735 "PROCEDURES IN SCHEMA",
4736 "ROUTINES IN SCHEMA",
4737 "SEQUENCES IN SCHEMA",
4738 "TABLES IN SCHEMA");
4761 if (
HeadMatches(
"ALTER",
"DEFAULT",
"PRIVILEGES"))
4802 "WITH GRANT OPTION",
4835 TailMatches(
"REVOKE",
"GRANT",
"OPTION",
"FOR",
MatchAny,
"ON",
"ALL",
MatchAny,
"IN",
"SCHEMA",
MatchAny))
4898 else if (
Matches(
"IMPORT",
"FOREIGN"))
4914 else if (
TailMatches(
"NOT",
"MATCHED",
"THEN",
"INSERT"))
4931 COMPLETE_WITH(
"(",
"DEFAULT VALUES",
"SELECT",
"TABLE",
"VALUES",
"OVERRIDING");
4958 else if (
Matches(
"LOCK",
"TABLE"))
4961 else if (
Matches(
"LOCK",
"TABLE",
"ONLY") ||
Matches(
"LOCK",
"ONLY"))
4975 "ROW SHARE MODE",
"ROW EXCLUSIVE MODE",
4976 "SHARE UPDATE EXCLUSIVE MODE",
"SHARE MODE",
4977 "SHARE ROW EXCLUSIVE MODE",
4978 "EXCLUSIVE MODE",
"ACCESS EXCLUSIVE MODE");
4990 "UPDATE EXCLUSIVE MODE");
5067 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE|TARGET"))
5075 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY"))
5082 else if (
TailMatches(
"WHEN",
"MATCHED",
"THEN") ||
5083 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"SOURCE",
"THEN"))
5089 else if (
TailMatches(
"WHEN",
"NOT",
"MATCHED",
"THEN") ||
5090 TailMatches(
"WHEN",
"NOT",
"MATCHED",
"BY",
"TARGET",
"THEN"))
5114 COMPLETE_WITH(
"SELECT",
"UPDATE",
"INSERT INTO",
"DELETE FROM",
5115 "MERGE INTO",
"VALUES",
"WITH",
"TABLE");
5125 else if (
Matches(
"REASSIGN",
"OWNED"))
5127 else if (
Matches(
"REASSIGN",
"OWNED",
"BY"))
5137 else if (
Matches(
"REFRESH",
"MATERIALIZED"))
5139 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW"))
5142 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY"))
5146 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny))
5148 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH"))
5150 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH"))
5152 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
MatchAny,
"WITH",
"NO"))
5154 else if (
Matches(
"REFRESH",
"MATERIALIZED",
"VIEW",
"CONCURRENTLY",
MatchAny,
"WITH",
"NO"))
5158 else if (
Matches(
"REINDEX") ||
5160 COMPLETE_WITH(
"TABLE",
"INDEX",
"SYSTEM",
"SCHEMA",
"DATABASE");
5161 else if (
Matches(
"REINDEX",
"TABLE") ||
5162 Matches(
"REINDEX",
"(*)",
"TABLE"))
5165 else if (
Matches(
"REINDEX",
"INDEX") ||
5166 Matches(
"REINDEX",
"(*)",
"INDEX"))
5169 else if (
Matches(
"REINDEX",
"SCHEMA") ||
5170 Matches(
"REINDEX",
"(*)",
"SCHEMA"))
5173 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE") ||
5174 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE"))
5177 else if (
Matches(
"REINDEX",
"TABLE",
"CONCURRENTLY") ||
5178 Matches(
"REINDEX",
"(*)",
"TABLE",
"CONCURRENTLY"))
5180 else if (
Matches(
"REINDEX",
"INDEX",
"CONCURRENTLY") ||
5181 Matches(
"REINDEX",
"(*)",
"INDEX",
"CONCURRENTLY"))
5183 else if (
Matches(
"REINDEX",
"SCHEMA",
"CONCURRENTLY") ||
5184 Matches(
"REINDEX",
"(*)",
"SCHEMA",
"CONCURRENTLY"))
5186 else if (
Matches(
"REINDEX",
"SYSTEM|DATABASE",
"CONCURRENTLY") ||
5187 Matches(
"REINDEX",
"(*)",
"SYSTEM|DATABASE",
"CONCURRENTLY"))
5206 "(",
"USING INDEX");
5207 else if (
Matches(
"REPACK",
"(*)"))
5240 else if (
TailMatches(
"ANALYZE",
"CONCURRENTLY",
"VERBOSE"))
5247 else if (
Matches(
"SECURITY",
"LABEL"))
5251 else if (
Matches(
"SECURITY",
"LABEL",
"ON") ||
5253 COMPLETE_WITH(
"TABLE",
"COLUMN",
"AGGREGATE",
"DATABASE",
"DOMAIN",
5254 "EVENT TRIGGER",
"FOREIGN TABLE",
"FUNCTION",
5255 "LARGE OBJECT",
"MATERIALIZED VIEW",
"LANGUAGE",
5256 "PROPERTY GRAPH",
"PUBLICATION",
"PROCEDURE",
"ROLE",
"ROUTINE",
"SCHEMA",
5257 "SEQUENCE",
"SUBSCRIPTION",
"TABLESPACE",
"TYPE",
"VIEW");
5258 else if (
Matches(
"SECURITY",
"LABEL",
"ON",
"PROPERTY",
"GRAPH"))
5280 "SESSION AUTHORIZATION",
5282 else if (
Matches(
"SHOW",
"SESSION"))
5285 else if (
Matches(
"SET",
"TRANSACTION"))
5286 COMPLETE_WITH(
"SNAPSHOT",
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5287 else if (
Matches(
"BEGIN|START",
"TRANSACTION") ||
5290 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION"))
5291 COMPLETE_WITH(
"ISOLATION LEVEL",
"READ",
"DEFERRABLE",
"NOT DEFERRABLE");
5292 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"NOT") ||
5294 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"NOT"))
5296 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION") ||
5297 Matches(
"BEGIN",
"ISOLATION") ||
5298 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION"))
5300 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL") ||
5301 Matches(
"BEGIN",
"ISOLATION",
"LEVEL") ||
5302 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL"))
5304 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"READ") ||
5305 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"READ") ||
5306 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"READ"))
5308 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5309 Matches(
"BEGIN",
"ISOLATION",
"LEVEL",
"REPEATABLE") ||
5310 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"ISOLATION",
"LEVEL",
"REPEATABLE"))
5312 else if (
Matches(
"SET|BEGIN|START",
"TRANSACTION|WORK",
"READ") ||
5314 Matches(
"SET",
"SESSION",
"CHARACTERISTICS",
"AS",
"TRANSACTION",
"READ"))
5317 else if (
Matches(
"SET",
"CONSTRAINTS"))
5324 else if (
Matches(
"SET",
"ROLE"))
5327 else if (
Matches(
"SET",
"SESSION"))
5328 COMPLETE_WITH(
"AUTHORIZATION",
"CHARACTERISTICS AS TRANSACTION");
5330 else if (
Matches(
"SET",
"SESSION",
"AUTHORIZATION"))
5334 else if (
Matches(
"RESET",
"SESSION"))
5357 "YMD",
"DMY",
"MDY",
5358 "US",
"European",
"NonEuropean",
5364 " AND nspname NOT LIKE E'pg\\\\_toast%%'"
5365 " AND nspname NOT LIKE E'pg\\\\_temp%%'",
5390 "1",
"0",
"DEFAULT");
5417 else if (
Matches(
"TRUNCATE",
"TABLE"))
5425 COMPLETE_WITH(
"RESTART IDENTITY",
"CONTINUE IDENTITY",
"CASCADE",
"RESTRICT");
5448 else if (
Matches(
"ALTER|CREATE|DROP",
"USER",
"MAPPING"))
5450 else if (
Matches(
"CREATE",
"USER",
"MAPPING",
"FOR"))
5456 else if (
Matches(
"ALTER|DROP",
"USER",
"MAPPING",
"FOR"))
5458 else if (
Matches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING",
"FOR",
MatchAny))
5485 "DISABLE_PAGE_SKIPPING",
"SKIP_LOCKED",
5486 "INDEX_CLEANUP",
"PROCESS_MAIN",
"PROCESS_TOAST",
5487 "TRUNCATE",
"PARALLEL",
"SKIP_DATABASE_STATS",
5488 "ONLY_DATABASE_STATS",
"BUFFER_USAGE_LIMIT");
5489 else if (
TailMatches(
"FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|PROCESS_MAIN|PROCESS_TOAST|TRUNCATE|SKIP_DATABASE_STATS|ONLY_DATABASE_STATS"))
5494 else if (
Matches(
"VACUUM",
"(*)"))
5497 else if (
Matches(
"VACUUM",
"FULL"))
5532 else if (
Matches(
"WAIT",
"FOR"))
5534 else if (
Matches(
"WAIT",
"FOR",
"LSN"))
5558 COMPLETE_WITH(
"'standby_replay'",
"'standby_write'",
"'standby_flush'",
"'primary_flush'");
5732 else if (
TailMatches(
"CREATE|ALTER|DROP",
"EVENT"))
5734 else if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN"))
5738 else if (
TailMatches(
"CREATE|ALTER|DROP",
"MATERIALIZED"))
5740 else if (
TailMatches(
"CREATE|ALTER|DROP",
"PROPERTY"))
5742 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT"))
5744 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER"))
5749 if (
TailMatches(
"CREATE|ALTER|DROP",
"FOREIGN",
"DATA"))
5751 else if (
TailMatches(
"CREATE|ALTER|DROP",
"TEXT",
"SEARCH"))
5752 COMPLETE_WITH(
"CONFIGURATION",
"DICTIONARY",
"PARSER",
"TEMPLATE");
5753 else if (
TailMatches(
"CREATE|ALTER|DROP",
"USER",
"MAPPING"))
5762 "display_false",
"display_true",
"expanded",
5763 "fieldsep",
"fieldsep_zero",
"footer",
"format",
5764 "linestyle",
"null",
"numericlocale",
5765 "pager",
"pager_min_lines",
5766 "recordsep",
"recordsep_zero",
5767 "tableattr",
"title",
"tuples_only",
5768 "unicode_border_linestyle",
5769 "unicode_column_linestyle",
5770 "unicode_header_linestyle",
5776 "latex-longtable",
"troff-ms",
"unaligned",
5785 "unicode_column_linestyle|"
5786 "unicode_header_linestyle"))
5795 if (
TailMatchesCS(
"AUTOCOMMIT|ON_ERROR_STOP|QUIET|SHOW_ALL_RESULTS|"
5796 "SINGLELINE|SINGLESTEP"))
5800 "preserve-lower",
"preserve-upper");
5807 "ignoreboth",
"none");
5819 else if (
TailMatchesCS(
"\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|"
5820 "\\ir|\\include_relative|\\o|\\out|"
5821 "\\s|\\w|\\write|\\lo_import") ||
5853 static int list_index,
6005 static int list_index,
6091 "%s, NULL::pg_catalog.text FROM %s",
6096 ", pg_catalog.pg_namespace nr");
6114 " AND %s = nr.oid AND nr.nspname = '%s'",
6131 "pg_catalog.pg_class c") == 0 &&
6135 " AND c.relnamespace <> (SELECT oid FROM"
6136 " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')");
6146 "SELECT NULL::pg_catalog.text, n.nspname "
6147 "FROM pg_catalog.pg_namespace n "
6148 "WHERE n.nspname LIKE '%s'",
6157 " AND n.nspname NOT LIKE E'pg\\\\_%'");
6174 "FROM %s, pg_catalog.pg_namespace n",
6179 ", pg_catalog.pg_namespace nr");
6197 " AND %s = nr.oid AND nr.nspname = '%s'",
6240 const char *item =
NULL;
6293 const char *item = *
itemp++;
6311 const char *item = *
itemp++;
6376 static int string_length,
6480 int *
maxvars,
const char *varname,
6481 const char *prefix,
const char *suffix)
6489 (*varnames)[(*nvars)++] =
psprintf(
"%s%s%s", prefix, varname, suffix);
6521 varnames[nvars] =
NULL;
6524 for (
i = 0;
i < nvars;
i++)
6543 static int list_index;
6601#ifdef USE_FILENAME_QUOTING_FUNCTIONS
6618#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
6675 if (*ret ==
'\'' &&
is_dir)
6703 unsigned char first =
ref[0];
6712 for (p = ret; *p; p++)
6717 for (p = ret; *p; p++)
6758 char *
bptr = buffer;
6872 if (
ch >=
'A' &&
ch <=
'Z')
6882 *schemaname =
sname;
6912 buflen +=
strlen(schemaname) + 1;
6918 for (
const char *p = schemaname; *p; p++)
6946 for (
const char *p = schemaname; *p; p++)
7031 pg_log_error(
"tab completion query failed: %s\nQuery was:\n%s",
7192 "SELECT vartype FROM pg_catalog.pg_settings "
7193 "WHERE pg_catalog.lower(name) = pg_catalog.lower('%s')",
7208#ifdef USE_FILENAME_QUOTING_FUNCTIONS
7257#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
7292 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)