diff options
author | alexv-smirnov <alex@ydb.tech> | 2023-11-07 18:01:02 +0300 |
---|---|---|
committer | alexv-smirnov <alex@ydb.tech> | 2023-11-07 18:54:21 +0300 |
commit | 4382353c3985417a93ae2b65ad96fe22531e39df (patch) | |
tree | 0d9e8a1dbdb53905bf530b0e586430db9f17a3b2 | |
parent | b31f6ac49dfc3f7092e78e23ab67507d9de74bf8 (diff) | |
download | ydb-4382353c3985417a93ae2b65ad96fe22531e39df.tar.gz |
KIKIMR-20003 Add service files as dependencies
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/CMakeLists.darwin-x86_64.txt | 24 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-aarch64.txt | 24 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-x86_64.txt | 24 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/CMakeLists.windows-x86_64.txt | 24 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/copy_src.py | 322 | ||||
-rwxr-xr-x | ydb/library/yql/parser/pg_wrapper/copy_src.sh | 12 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/generate_kernels.py | 397 | ||||
-rwxr-xr-x | ydb/library/yql/parser/pg_wrapper/generate_patch.sh | 11 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/vars.txt | 1547 | ||||
-rwxr-xr-x | ydb/library/yql/parser/pg_wrapper/verify.sh | 24 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/ya.make | 10 |
11 files changed, 2419 insertions, 0 deletions
diff --git a/ydb/library/yql/parser/pg_wrapper/CMakeLists.darwin-x86_64.txt b/ydb/library/yql/parser/pg_wrapper/CMakeLists.darwin-x86_64.txt index baa2397967..d5515f04cc 100644 --- a/ydb/library/yql/parser/pg_wrapper/CMakeLists.darwin-x86_64.txt +++ b/ydb/library/yql/parser/pg_wrapper/CMakeLists.darwin-x86_64.txt @@ -936,3 +936,27 @@ target_sources(yql-parser-pg_wrapper PRIVATE ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/port/posix_sema.c ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/port/sysv_shmem.c ) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh +) diff --git a/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-aarch64.txt b/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-aarch64.txt index a5d6380c42..f877af81e3 100644 --- a/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-aarch64.txt +++ b/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-aarch64.txt @@ -933,3 +933,27 @@ target_sources(yql-parser-pg_wrapper PRIVATE ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/port/posix_sema.c ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/port/sysv_shmem.c ) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh +) diff --git a/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-x86_64.txt b/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-x86_64.txt index 40c4c4d060..5e4926b67d 100644 --- a/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-x86_64.txt +++ b/ydb/library/yql/parser/pg_wrapper/CMakeLists.linux-x86_64.txt @@ -937,3 +937,27 @@ target_sources(yql-parser-pg_wrapper PRIVATE ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/port/posix_sema.c ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/port/sysv_shmem.c ) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh +) diff --git a/ydb/library/yql/parser/pg_wrapper/CMakeLists.windows-x86_64.txt b/ydb/library/yql/parser/pg_wrapper/CMakeLists.windows-x86_64.txt index adf0b9ad1c..9cd9246e9a 100644 --- a/ydb/library/yql/parser/pg_wrapper/CMakeLists.windows-x86_64.txt +++ b/ydb/library/yql/parser/pg_wrapper/CMakeLists.windows-x86_64.txt @@ -975,3 +975,27 @@ target_sources(yql-parser-pg_wrapper PRIVATE ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/port/win32setlocale.c ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/postgresql/src/port/win32stat.c ) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/copy_src.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_kernels.py +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/generate_patch.sh +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/vars.txt +) +copy_file( + ${CMAKE_SOURCE_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh + ${CMAKE_BINARY_DIR}/ydb/library/yql/parser/pg_wrapper/verify.sh +) diff --git a/ydb/library/yql/parser/pg_wrapper/copy_src.py b/ydb/library/yql/parser/pg_wrapper/copy_src.py new file mode 100644 index 0000000000..17b1b697bf --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/copy_src.py @@ -0,0 +1,322 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +from shutil import Error, copy2, rmtree +import subprocess +from collections import defaultdict + +all_vars = set() +all_funcs_with_statics = defaultdict(list) +thread_funcs = [] +define_for_yylval = None +skip_func = False +erase_func = False +split_def = False +def_type = None +def_var = None +ignore_func = False +inside_func = None + +to_add_const = set([ + "nullSemAction", + "sentinel", + "backslash_quote", + "Dummy_trace", + "escape_string_warning", + "standard_conforming_strings", + "gistBufferingOptValues", + "StdRdOptIndexCleanupValues", + "boolRelOpts", + "intRelOpts", + "realRelOpts", + "viewCheckOptValues", + "enumRelOpts", + "stringRelOpts"]) + +def fix_line(line, all_lines, pos): + global inside_func + global define_for_yylval + if line.startswith("#define yylval"): + define_for_yylval=line[14:].strip() + + if line.startswith("#define HAVE_EXECINFO_H 1"): + return "#undef HAVE_EXECINFO_H\n" + + if line.startswith("#define HAVE_BACKTRACE_SYMBOLS 1"): + return "#undef HAVE_BACKTRACE_SYMBOLS\n" + + if "static YYSTYPE yyval_default" in line or \ + "static YYLTYPE yyloc_default" in line: + return line.replace("static","static __thread") + + global skip_func + global erase_func + if line.startswith("build_guc_variables(void)"): + skip_func = True + return line + + global ignore_func + if line.startswith("yyparse"): + ignore_func = True + return line + + if inside_func is not None: + for v in all_funcs_with_statics[inside_func]: + if v in line and "static" in line: + return line.replace("static","static __thread") + + if inside_func: + if line.startswith("}"): + inside_func=None + + if skip_func: + if line.startswith("{"): + return None if erase_func else line + if not line.startswith("}"): + return None + skip_func=False + if erase_func: + erase_func=False + return None + + if ignore_func: + if line.startswith("{"): + return line + if not line.startswith("}"): + return line + ignore_func=False + + global split_def + global def_type + global def_var + if line.startswith("static struct xllist"): + split_def = True + def_type = "xllist" + def_var = "records"; + return "typedef struct xllist\n"; + + if line.startswith("static struct RELCACHECALLBACK"): + split_def = True + def_type = "RELCACHECALLBACK" + def_var = "relcache_callback_list[MAX_RELCACHE_CALLBACKS]"; + return "typedef struct RELCACHECALLBACK\n"; + + if line.startswith("static struct SYSCACHECALLBACK"): + split_def = True + def_type = "SYSCACHECALLBACK" + def_var = "syscache_callback_list[MAX_SYSCACHE_CALLBACKS]"; + return "typedef struct SYSCACHECALLBACK\n"; + + if split_def and line.startswith("}"): + split_def = False; + return "} " + def_type + "; static __thread " + def_type + " " + def_var + ";\n" + + if line.strip()=="static struct": + i = pos + while i < len(all_lines): + if all_lines[i].startswith("}"): + name = all_lines[i][1:].replace(";","").strip() + split_def = True + def_type = name + "_t" + def_var = name + return "typedef struct " + def_type + "\n"; + i += 1 + + if "ConfigureNames" in line and line.strip().endswith("[] ="): + skip_func = True + erase_func = True + return None + + if line.startswith("#") or line.startswith(" ") or line.startswith("\t"): + return line + + for f in all_funcs_with_statics: + if f in line and ";" not in line: + inside_func = f + return line + + if not "=" in line: + line2=line + if "//" in line2: line2 = line2[:line2.find("//")] + if "/*" in line2: line2 = line2[:line2.find("/*")] + + if "(" in line2 or "{" in line2 or "}" in line2: + return line + + if ";" not in line2: + return line + + if line.startswith("YYSTYPE yylval;"): + line = line.replace("yylval", define_for_yylval) + + norm = line.replace("\t"," ") + + ret = None + found_v = None + for v in to_add_const: + if v in norm: + ret = line \ + .replace("static","static const") \ + .replace("relopt_enum_elt_def","const relopt_enum_elt_def") + + if v == "backslash_quote": + ret = ret.replace("int","const int") + + if v == "escape_string_warning" or v == "standard_conforming_strings": + ret = ret.replace("bool","const bool") + + if v == "nullSemAction": + ret = ret.replace("JsonSemAction","const JsonSemAction") + + return ret + + for v in all_vars: + if " " + v + " " in norm or " " + v + ";" in norm or " " + v + "[" in norm or \ + "*" + v + " " in norm or "*" + v + ";" in norm or "*" + v + "[" in norm: + found_v = v + if line.startswith("static"): + ret = "static __thread" + line[6:] + elif line.startswith("extern"): + ret = "extern __thread" + line[6:] + else: + ret = "__thread " + line + break + + if ret is None: + return line + + if "DLIST_STATIC_INIT" in ret: + # rewrite without {{}} inits + pos=ret.find("="); + ret=ret[:pos] + ";"; + ret+="void "+found_v+"_init(void) { dlist_init(&" + found_v + "); }"; + ret+="\n"; + thread_funcs.append(found_v+"_init"); + + if "CurrentTransactionState" in ret or "mainrdata_last" in ret: + # rewrite with address of TLS var + pos=ret.find("="); + init_val=ret[pos+1:]; + ret=ret[:pos] + ";"; + ret+="void "+found_v+"_init(void) { "+found_v+"="+init_val +" };" + ret+="\n"; + thread_funcs.append(found_v+"_init"); + + return ret + +def mycopy2(src, dst): + global define_for_yylval + define_for_yylval = None + if not (src.endswith(".h") or src.endswith(".c")): + return + with open(src,"r") as fsrc: + with open(dst,"w") as fdst: + all_lines = list(fsrc) + for pos,line in enumerate(all_lines): + line = fix_line(line,all_lines,pos) + if line is not None: + fdst.write(line) + +def copytree(src, dst): + names = os.listdir(src) + os.makedirs(dst) + errors = [] + for name in names: + if name == "help_config.c": continue + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) + #print(srcname) + try: + if os.path.isdir(srcname): + copytree(srcname, dstname) + else: + mycopy2(srcname, dstname) + except OSError as why: + errors.append((srcname, dstname, str(why))) + except Error as err: + errors.extend(err.args[0]) + if errors: + raise Error(errors) + +def make_sources_list(): + with open("../../../../../contrib/libs/postgresql/ya.make","r") as fsrc: + with open("pg_sources.inc","w") as fdst: + fdst.write("SRCS(\n") + for line in fsrc: + if line.startswith(" src/"): + #print(line.strip()) + if "/help_config.c" in line: continue + fdst.write(" postgresql/" + line.strip() + "\n") + fdst.write(")\n") + +def get_vars(): + s=subprocess.check_output("objdump ../../../../../contrib/libs/postgresql/libpostgres.a -tw",shell=True).decode("utf-8") + for a in s.replace("\t"," ").split("\n"): + for b in a.split(" "): + sym=None + if b.startswith(".bss."): sym=b[5:] + elif b.startswith(".data."): sym=b[6:] + if sym is not None: + all_vars.add(sym.replace("yql_","")) + + for x in to_add_const: + all_vars.remove(x) + + all_vars.remove("BlockSig") + all_vars.remove("StartupBlockSig") + all_vars.remove("UnBlockSig") + all_vars.remove("on_proc_exit_index") + all_vars.remove("on_shmem_exit_index") + all_vars.remove("before_shmem_exit_index") + + all_vars.add("yychar") + all_vars.add("yyin") + all_vars.add("yyout") + all_vars.add("yyleng") + all_vars.add("yynerrs") + all_vars.add("yytext") + all_vars.add("yy_flex_debug") + all_vars.add("yylineno") + + all_vars.remove("UsedShmemSegID") + all_vars.remove("UsedShmemSegAddr") + all_vars.remove("local_my_wait_event_info") + all_vars.remove("my_wait_event_info") + + with open("vars.txt","w") as f: + for a in sorted(all_vars): + print(a, file=f) + + for a in all_vars: + l=a.split(".") + if len(l)==2: + all_funcs_with_statics[l[0]].append(l[1]) + +def write_thread_inits(): + with open("thread_inits.c","w") as f: + print("""#include "thread_inits.h" +static __thread int pg_thread_init_flag; + +void pg_thread_init(void) { + if (pg_thread_init_flag) return; + pg_thread_init_flag=1; + setup_pg_thread_cleanup(); + pg_timezone_initialize(); +""", file=f) + + for a in sorted(thread_funcs): + print(" " + a + "();", file=f) + print("}", file=f) + + with open("thread_inits.h","w") as f: + print("#pragma once", file=f) + print("extern void pg_thread_init();", file=f) + +if __name__ == "__main__": + get_vars() + make_sources_list() + if os.path.isdir("postgresql"): + rmtree("postgresql") + copytree("../../../../../contrib/libs/postgresql", "postgresql") + write_thread_inits() diff --git a/ydb/library/yql/parser/pg_wrapper/copy_src.sh b/ydb/library/yql/parser/pg_wrapper/copy_src.sh new file mode 100755 index 0000000000..4d8b3291f8 --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/copy_src.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -eux +echo copy data files... +cp ../../../../../contrib/libs/postgresql/src/include/catalog/*.dat postgresql/src/include/catalog/ +cp ../../../../../contrib/libs/postgresql/src/backend/catalog/*.sql postgresql/src/backend/catalog/ + +rm -f ../../../../../contrib/libs/postgresql/libpostgres.a +ya make ../../../../../contrib/libs/postgresql --checkout + +export LANG=ru_RU.UTF-8 +python3 copy_src.py +for i in $(ls patches/); do (cd postgresql && patch -p1 < ../patches/$i); done diff --git a/ydb/library/yql/parser/pg_wrapper/generate_kernels.py b/ydb/library/yql/parser/pg_wrapper/generate_kernels.py new file mode 100644 index 0000000000..6173e695a4 --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/generate_kernels.py @@ -0,0 +1,397 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +import json +import zlib +from collections import defaultdict + +SPLIT_FILES = 20 + +def is_strict(oid_per_name, funcs, name): + found = None + for oid in oid_per_name[name]: + strict = funcs[oid][1] + if found is None: + found = strict + else: + assert found == strict + return "true" if found else "false" + +def is_result_fixed(oid_per_name, catalog_by_oid, name): + found = None + for oid in oid_per_name[name]: + fixed = catalog_by_oid[oid]["ret_type_fixed"] + if found is None: + found = fixed + else: + assert found == fixed + return "true" if found else "false" + +def get_fixed_args(oid_per_name, catalog_by_oid, name): + found = None + for oid in oid_per_name[name]: + fixed = [x["arg_type_fixed"] for x in catalog_by_oid[oid]["args"]] + if found is None: + found = fixed + else: + # e.g. range_constructor2 + if found != fixed: + return None + return found + +def main(): + pg_sources = [] + with open("pg_sources.inc") as f: + for line in f: + pg_sources.append(line.rstrip()) + with open("../../../../../yql/tools/pg_catalog_dump/dump.json") as f: + catalog = json.load(f) + catalog_by_oid = {} + catalog_funcs = set() + for proc in catalog["proc"]: + catalog_by_oid[proc["oid"]] = proc + catalog_funcs.add(proc["src"]) + catalog_aggs_by_id = {} + for agg in catalog["aggregation"]: + if not agg["combine_func_id"]: + continue + catalog_aggs_by_id[agg["internal_id"]] = agg + assert len(agg["args"]) <= 2 + + funcs={} + with open("postgresql/src/backend/utils/fmgrtab.c") as f: + parse=False + for line in f: + if "fmgr_builtins[]" in line: + parse=True + continue + if not parse: + continue + if line.startswith("}"): + parse=False + continue + c=line.strip()[1:-2].split(", ") + oid=int(c[0]) + nargs=int(c[1]) + strict=c[2].strip()=="true" + retset=c[3].strip()=="true" + name=c[4].strip().strip('"') + func=c[5].strip() + if retset: continue + if name!=func: + print(name,func) + continue + if not oid in catalog_by_oid: + print("skipped by catalog: ",name) + continue + funcs[oid] = (nargs, strict, name) + print("funcs: ", len(funcs)) + func_names=set(x[2] for x in funcs.values()) + print("unique names: ", len(func_names)) + print("aggs: ", len(catalog_aggs_by_id)) + oid_per_name={} + all_found_funcs=set() + for x in funcs: + name = funcs[x][2] + if not name in oid_per_name: + oid_per_name[name]=[] + oid_per_name[name].append(x) + symbols={} + for i in range(len(pg_sources)): + line = pg_sources[i] + if not line.endswith(".c"): + continue + cfile = line.strip() + found_funcs = set() + #print(cfile) + with open(cfile) as f: + for srcline in f: + pos=srcline.find("(PG_FUNCTION_ARGS)") + if pos!=-1: + names=[srcline[0:pos].strip()] + elif srcline.startswith("CMPFUNC("): + pos=srcline.find(",") + names=[srcline[8:pos]] + elif srcline.startswith("TSVECTORCMPFUNC("): + pos=srcline.find(",") + names=["tsvector_"+srcline[16:pos]] + elif srcline.startswith("PSEUDOTYPE_DUMMY_IO_FUNCS("): + pos=srcline.find(")") + names=[srcline[26:pos]+"_in", srcline[26:pos]+"_out"] + elif srcline.startswith("PSEUDOTYPE_DUMMY_INPUT_FUNC(") and "\\" not in srcline: + pos=srcline.find(")") + names=[srcline[28:pos]+"_in"] + elif srcline.startswith("PSEUDOTYPE_DUMMY_BINARY_IO_FUNCS"): + pos=srcline.find(")") + names=[srcline[33:pos]+"_send", srcline[33:pos]+"_recv"] + elif srcline.startswith("PSEUDOTYPE_DUMMY_RECEIVE_FUNC(") and "\\" not in srcline: + pos=srcline.find(")") + names=[srcline[30:pos]+"_recv"] + else: + continue + for name in names: + if name in func_names: + found_funcs.add(name) + all_found_funcs.add(name) + if not found_funcs: + continue + print(cfile, len(found_funcs)) + symbols[cfile] = found_funcs + split_symbols = [] + split_all_found_funcs = [] + for i in range(SPLIT_FILES): + curr_symbols = {} + curr_all_found_funcs = set() + for cfile in symbols: + if zlib.crc32(cfile.encode("utf8")) % SPLIT_FILES != i: continue + curr_symbols[cfile] = symbols[cfile] + curr_all_found_funcs.update(symbols[cfile]) + + split_symbols.append(curr_symbols) + split_all_found_funcs.append(curr_all_found_funcs) + # check if all functions are available + split_for_agg = {} + for agg in catalog_aggs_by_id.values(): + oids = set() + oids.add(agg["trans_func_id"]) + if agg["serialize_func_id"]: + assert catalog_by_oid[agg["serialize_func_id"]]["strict"] + oids.add(agg["serialize_func_id"]) + if agg["deserialize_func_id"]: + assert catalog_by_oid[agg["deserialize_func_id"]]["strict"] + oids.add(agg["deserialize_func_id"]) + if agg["final_func_id"]: + oids.add(agg["final_func_id"]) + oids.add(agg["combine_func_id"]) + names = [catalog_by_oid[oid]["src"] for oid in oids] + + for i in range(SPLIT_FILES): + with open("pg_bc."+str(i)+".inc", "w") as bc: + bc.write("LLVM_BC(\n" + \ + "\n".join((" " + x) for x in sorted(split_symbols[i].keys())) + \ + "\n pg_kernels."+str(i)+".cpp\n" + \ + "\n NAME PgFuncs" + str(i) + "\n" + \ + "\n SYMBOLS\n" + \ + "\n".join((" arrow_" + x) for x in sorted(split_all_found_funcs[i])) + \ + "\n)\n") + for i in range(SPLIT_FILES): + with open("pg_proc_policies." + str(i) + ".inc", "w") as p: + for x in sorted(split_all_found_funcs[i]): + fixed_args = get_fixed_args(oid_per_name, catalog_by_oid, x) + if fixed_args is not None: + p.write("struct TArgs_NAME_Policy {\n".replace("NAME", x)) + p.write(" static constexpr bool VarArgs = false;\n") + p.write(" static constexpr std::array<bool, N> IsFixedArg = {V};\n" \ + .replace("N", str(len(fixed_args))) \ + .replace("V", ",".join("true" if x else "false" for x in fixed_args))) + p.write("};\n") + else: + print("polymorphic args:", x) + for i in range(SPLIT_FILES): + with open("pg_kernels." + str(i) + ".inc", "w") as k: + for x in sorted(split_all_found_funcs[i]): + fixed_args = get_fixed_args(oid_per_name, catalog_by_oid, x) + k.write( + "TExecFunc arrow_NAME() { return TGenericExec<TPgDirectFunc<&NAME>, STRICT, IS_RESULT_FIXED, POLICY>({}); }\n" \ + .replace("NAME", x) \ + .replace("STRICT", is_strict(oid_per_name, funcs, x)) \ + .replace("IS_RESULT_FIXED", is_result_fixed(oid_per_name, catalog_by_oid, x)) + .replace("POLICY", "TArgs_" + x + "_Policy" if fixed_args is not None else "TDefaultArgsPolicy")) + for i in range(SPLIT_FILES): + with open("pg_kernels.slow." + str(i) + ".inc", "w") as k: + for x in sorted(split_all_found_funcs[i]): + k.write( + "TExecFunc arrow_NAME() { return MakeIndirectExec<STRICT, IS_RESULT_FIXED>(&NAME); }\n" \ + .replace("NAME", x) \ + .replace("STRICT", is_strict(oid_per_name, funcs, x)) \ + .replace("IS_RESULT_FIXED", is_result_fixed(oid_per_name, catalog_by_oid, x))) + with open("pg_kernels_fwd.inc", "w") as k: + k.write(\ + "\n".join("extern TExecFunc arrow_NAME();".replace("NAME", x) for x in sorted(all_found_funcs)) + \ + "\n") + for i in range(SPLIT_FILES): + with open("pg_kernels_register." + str(i) + ".inc", "w") as r: + for name in oid_per_name: + if not name in split_all_found_funcs[i]: continue + for oid in sorted(oid_per_name[name]): + r.write("RegisterExec(" + str(oid) + ", arrow_" + name + "());\n") + for slow in [False, True]: + with open("pg_aggs" + (".slow" if slow else "") + ".inc","w") as p: + for agg_id in sorted(catalog_aggs_by_id.keys()): + agg = catalog_aggs_by_id[agg_id] + trans_func = catalog_by_oid[agg["trans_func_id"]]["src"] + trans_fixed_args = None if slow else get_fixed_args(oid_per_name, catalog_by_oid, trans_func) + combine_func = catalog_by_oid[agg["combine_func_id"]]["src"] + combine_fixed_args = None if slow else get_fixed_args(oid_per_name, catalog_by_oid, combine_func) + serialize_func = "" + serialize_fixed_args = None + if agg["serialize_func_id"]: + serialize_func = catalog_by_oid[agg["serialize_func_id"]]["src"] + serialize_fixed_args = None if slow else get_fixed_args(oid_per_name, catalog_by_oid, serialize_func) + deserialize_func = "" + deserialize_fixed_args = None + if agg["deserialize_func_id"]: + deserialize_func = catalog_by_oid[agg["deserialize_func_id"]]["src"] + deserialize_fixed_args = None if slow else get_fixed_args(oid_per_name, catalog_by_oid, deserialize_func) + final_func = "" + final_fixed_args = None + if agg["final_func_id"]: + final_func = catalog_by_oid[agg["final_func_id"]]["src"] + final_fixed_args = None if slow else get_fixed_args(oid_per_name, catalog_by_oid, final_func) + + p.write("auto MakePgAgg_" + agg["name"] + "_" + str(agg_id) + "() {\n" + " return TGenericAgg<\n \ + TRANS_FUNC, IS_TRANS_STRICT, TRANS_ARGS_POLICY,\n \ + COMBINE_FUNC, IS_COMBINE_STRICT, COMBINE_ARGS_POLICY,\n \ + HAS_SERIALIZE_FUNC, SERIALIZE_FUNC1, SERIALIZE_ARGS_POLICY1,\n \ + HAS_DESERIALIZE_FUNC, DESERIALIZE_FUNC, DESERIALIZE_ARGS_POLICY,\n \ + HAS_FINAL_FUNC, FINAL_FUNC, IS_FINAL_STRICT, FINAL_ARGS_POLICY,\n \ + TRANS_TYPE_FIXED, SERIALIZED_TYPE_FIXED, FINAL_TYPE_FIXED, HAS_INIT_VALUE\n \ + >(TRANS_OBJ, COMBINE_OBJ, SERIALIZE1_OBJ, DESERIALIZE_OBJ, FINAL_OBJ);\n" \ + .replace("TRANS_FUNC", "TPgIndirectFunc" if slow else "TPgDirectFunc<&" + trans_func + ">") \ + .replace("IS_TRANS_STRICT", "true" if catalog_by_oid[agg["trans_func_id"]]["strict"] else "false") \ + .replace("TRANS_ARGS_POLICY", "TArgs_" + trans_func + "_Policy" if trans_fixed_args is not None else "TDefaultArgsPolicy") \ + .replace("COMBINE_FUNC", "TPgIndirectFunc" if slow else "TPgDirectFunc<&" + combine_func + ">") \ + .replace("IS_COMBINE_STRICT", "true" if catalog_by_oid[agg["combine_func_id"]]["strict"] else "false") \ + .replace("COMBINE_ARGS_POLICY", "TArgs_" + combine_func + "_Policy" if combine_fixed_args is not None else "TDefaultArgsPolicy") \ + .replace("HAS_SERIALIZE_FUNC", "true" if serialize_func else "false") \ + .replace("SERIALIZE_FUNC1", "TPgDirectFunc<&" + serialize_func + ">" if serialize_func and not slow else "TPgIndirectFunc") \ + .replace("SERIALIZE_ARGS_POLICY1", "TArgs_" + serialize_func + "_Policy" if serialize_fixed_args is not None else "TDefaultArgsPolicy") \ + .replace("HAS_DESERIALIZE_FUNC", "true" if deserialize_func else "false") \ + .replace("DESERIALIZE_FUNC", "TPgDirectFunc<&" + deserialize_func + ">" if deserialize_func and not slow else "TPgIndirectFunc") \ + .replace("DESERIALIZE_ARGS_POLICY", "TArgs_" + deserialize_func + "_Policy" if deserialize_fixed_args is not None else "TDefaultArgsPolicy") \ + .replace("HAS_FINAL_FUNC", "true" if final_func else "false") \ + .replace("FINAL_FUNC", "TPgDirectFunc<&" + final_func + ">" if final_func and not slow else "TPgIndirectFunc") \ + .replace("IS_FINAL_STRICT", "true" if final_func and catalog_by_oid[agg["final_func_id"]]["strict"] else "false") \ + .replace("FINAL_ARGS_POLICY", "TArgs_" + final_func + "_Policy" if final_fixed_args is not None else "TDefaultArgsPolicy") \ + .replace("TRANS_TYPE_FIXED", "true" if agg["trans_type_fixed"] else "false") \ + .replace("SERIALIZED_TYPE_FIXED", "true" if agg["serialized_type_fixed"] else "false") \ + .replace("FINAL_TYPE_FIXED", "true" if agg["ret_type_fixed"] else "false") \ + .replace("HAS_INIT_VALUE", "true" if agg["has_init_value"] else "false") \ + .replace("TRANS_OBJ", "&" + trans_func if slow else "{}") \ + .replace("COMBINE_OBJ", "&" + combine_func if slow else "{}") \ + .replace("SERIALIZE1_OBJ", ("&" + serialize_func if slow else "{}") if serialize_func else "nullptr") \ + .replace("DESERIALIZE_OBJ", ("&" +deserialize_func if slow else "{}") if deserialize_func else "nullptr") \ + .replace("FINAL_OBJ", ("&" + final_func if slow else "{}") if final_func else "nullptr") \ + ) + p.write("}\n") + + agg_names = defaultdict(list) + with open("pg_aggs_register.inc","w") as p: + for agg_id in sorted(catalog_aggs_by_id.keys()): + agg_names[catalog_aggs_by_id[agg_id]["name"]].append(agg_id) + for name in agg_names: + p.write( + ("class TPgAggFactory_NAME: public IBlockAggregatorFactory {\n" \ + "std::unique_ptr<IPreparedBlockAggregator<IBlockAggregatorCombineAll>> PrepareCombineAll(\n" \ + " TTupleType* tupleType,\n" \ + " std::optional<ui32> filterColumn,\n" \ + " const std::vector<ui32>& argsColumns,\n" \ + " const TTypeEnvironment& env) const final {\n" \ + " const auto& aggDesc = ResolveAggregation(\"NAME\", tupleType, argsColumns, nullptr);\n" \ + " switch (aggDesc.InternalId) {\n" + + "".join([" case " + str(agg_id) + ": return MakePgAgg_NAME_" + str(agg_id) + "().PrepareCombineAll(filterColumn, argsColumns, aggDesc);\n" for agg_id in agg_names[name]]) + + " default: throw yexception() << \"Unsupported agg id: \" << aggDesc.InternalId;\n" \ + " }\n" \ + "}\n" \ + "\n" \ + "std::unique_ptr<IPreparedBlockAggregator<IBlockAggregatorCombineKeys>> PrepareCombineKeys(\n" \ + " TTupleType* tupleType,\n" \ + " const std::vector<ui32>& argsColumns,\n" \ + " const TTypeEnvironment& env) const final {\n" \ + " const auto& aggDesc = ResolveAggregation(\"NAME\", tupleType, argsColumns, nullptr);\n" + " switch (aggDesc.InternalId) {\n" + + "".join([" case " + str(agg_id) + ": return MakePgAgg_NAME_" + str(agg_id) + "().PrepareCombineKeys(argsColumns, aggDesc);\n" for agg_id in agg_names[name]]) + + " default: throw yexception() << \"Unsupported agg id: \" << aggDesc.InternalId;\n" \ + " }\n" \ + "}\n" \ + "\n" \ + "std::unique_ptr<IPreparedBlockAggregator<IBlockAggregatorFinalizeKeys>> PrepareFinalizeKeys(\n" \ + " TTupleType* tupleType,\n" \ + " const std::vector<ui32>& argsColumns,\n" \ + " const TTypeEnvironment& env,\n" \ + " TType* returnType) const final {\n" \ + " const auto& aggDesc = ResolveAggregation(\"NAME\", tupleType, argsColumns, returnType);\n" + " switch (aggDesc.InternalId) {\n" + + "".join([" case " + str(agg_id) + ": return MakePgAgg_NAME_" + str(agg_id) + "().PrepareFinalizeKeys(argsColumns.front(), aggDesc);\n" for agg_id in agg_names[name]]) + + " default: throw yexception() << \"Unsupported agg id: \" << aggDesc.InternalId;\n" \ + " }\n" \ + "}\n" \ + "};\n").replace("NAME", name)) + for name in agg_names: + p.write('registry.emplace("pg_' + name + '", std::make_unique<TPgAggFactory_' + name + '>());\n') + + for i in range(SPLIT_FILES): + with open("pg_kernels." + str(i) + ".cpp","w") as f: + f.write( + 'extern "C" {\n' + '#include "postgres.h"\n' + '#include "fmgr.h"\n' + '#include "postgresql/src/backend/utils/fmgrprotos.h"\n' + '#undef Abs\n' + '#undef Min\n' + '#undef Max\n' + '#undef TypeName\n' + '#undef SortBy\n' + '#undef Sort\n' + '#undef Unique\n' + '#undef LOG\n' + '#undef INFO\n' + '#undef NOTICE\n' + '#undef WARNING\n' + '#undef ERROR\n' + '#undef FATAL\n' + '#undef PANIC\n' + '#undef open\n' + '#undef fopen\n' + '#undef bind\n' + '#undef locale_t\n' + '}\n' + '\n' + '#include "arrow.h"\n' + '\n' + 'namespace NYql {\n' + '\n' + 'extern "C" {\n' + '\n' + '#ifdef USE_SLOW_PG_KERNELS\n' + '#include "pg_kernels.slow.INDEX.inc"\n' + '#else\n' + '#include "pg_proc_policies.INDEX.inc"\n' + '#include "pg_kernels.INDEX.inc"\n' + '#endif\n' + '\n' + '}\n' + '\n' + '}\n'.replace("INDEX",str(i)) + ) + + with open("pg_kernels_register.all.inc","w") as f: + for i in range(SPLIT_FILES): + f.write('#include "pg_kernels_register.INDEX.inc"\n'.replace("INDEX", str(i))) + + with open("pg_proc_policies.all.inc","w") as f: + for i in range(SPLIT_FILES): + f.write('#include "pg_proc_policies.INDEX.inc"\n'.replace("INDEX", str(i))) + + with open("pg_kernel_sources.inc","w") as f: + f.write("SRCS(\n") + for i in range(SPLIT_FILES): + f.write(' pg_kernels.INDEX.cpp\n'.replace("INDEX", str(i))) + f.write(")\n") + + with open("pg_bc.all.inc","w") as f: + for i in range(SPLIT_FILES): + f.write('INCLUDE(pg_bc.INDEX.inc)\n'.replace("INDEX", str(i))) + + print("found funcs: ",len(all_found_funcs)) + print("agg names: ",len(agg_names)) + print("agg funcs: ",len(catalog_aggs_by_id)) + missing=func_names.difference(all_found_funcs) + if missing: + print("missing funcs: ",len(missing)) + print(missing) + +if __name__ == "__main__": + main() diff --git a/ydb/library/yql/parser/pg_wrapper/generate_patch.sh b/ydb/library/yql/parser/pg_wrapper/generate_patch.sh new file mode 100755 index 0000000000..b4512bc7d8 --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/generate_patch.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Run on clean reposiory (changes should be commited) + +set -eEu +trap 'echo Script failed!' ERR + +rm -rf postgresql.patched +cp -a postgresql postgresql.patched +./copy_src.sh > /dev/null 2>&1 +diff -ruN postgresql postgresql.patched || true +rm -rf postgresql.patched diff --git a/ydb/library/yql/parser/pg_wrapper/vars.txt b/ydb/library/yql/parser/pg_wrapper/vars.txt new file mode 100644 index 0000000000..a9ca5a5c3a --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/vars.txt @@ -0,0 +1,1547 @@ +ATExecSetRelOptions.validnsps +AbortStartTime +ActivePortal +ActiveSnapshot +AnonymousShmem +AnonymousShmemSize +Ap +ApplyContext +ApplyMessageContext +ArchiveRecoveryRequested +Array_nulls +AttoptCacheHash +AuthenticatedUserId +AuthenticatedUserIsSuperuser +AuthenticationTimeout +AutoVacPID +AutoVacuumShmem +AutovacMemCxt +AutovacuumLauncherPid +AuxProcessResourceOwner +AuxiliaryProcs +BackendActivityBuffer +BackendActivityBufferSize +BackendAppnameBuffer +BackendClientHostnameBuffer +BackendList +BackendSslStatusBuffer +BackendStatusArray +BackendWritebackContext +BackgroundWorkerData +BackgroundWorkerList +BgBufferSync.next_passes +BgBufferSync.next_to_clean +BgBufferSync.prev_strategy_buf_id +BgBufferSync.prev_strategy_passes +BgBufferSync.saved_info_valid +BgBufferSync.smoothed_alloc +BgBufferSync.smoothed_density +BgWriterDelay +BgWriterPID +BgWriterStats +BufferBlocks +BufferDescriptors +BufferIOCVArray +CFuncHash +CacheHdr +CacheInitialized +CacheMemoryContext +CatalogSnapshot +CatalogSnapshotData +CheckClientConnectionPending +CheckPointCompletionTarget +CheckPointDistanceEstimate +CheckPointSegments +CheckPointTimeout +CheckPointWarning +CheckXidAlive +CheckpointStats +CheckpointWriteDelay.absorb_counter +CheckpointerPID +CheckpointerShmem +CkptBufferIds +ClientAuthInProgress +ClientAuthentication_hook +ClientConnectionLost +ClientEncoding +CommitDelay +CommitSiblings +CommitTsCtlData +ComputeXidHorizonsResultLastXmin +ConfigFileLineno +ConfigFileName +ConfigReloadPending +ConfigureNamesBool +ConfigureNamesEnum +ConfigureNamesInt +ConfigureNamesReal +ConfigureNamesString +ControlFile +ConvProcList +CreateNewPortal.unnamed_portal_count +CritSectionCount +CurTransactionContext +CurTransactionResourceOwner +CurrentDynaHashCxt +CurrentExtensionObject +CurrentLCTimeValid +CurrentLocaleConvValid +CurrentMemoryContext +CurrentResourceOwner +CurrentSession +CurrentSnapshot +CurrentSnapshotData +CurrentTransactionState +CurrentUserId +DCHCache +DCHCounter +DataDir +DatabaseEncoding +DatabaseList +DatabaseListCxt +DatabasePath +DateOrder +DateStyle +Db_user_namespace +DeadlockTimeout +Debug_pretty_print +Debug_print_parse +Debug_print_plan +Debug_print_rewritten +DefaultXactDeferrable +DefaultXactIsoLevel +DefaultXactReadOnly +DefineRelation.validnsps +DoingCommandRead +Dynamic_library_path +EOXactTupleDescArray +EOXactTupleDescArrayLen +EchoQuery +EnableHotStandby +EnableSSL +EndRecPtr +ErrorContext +EventTriggerCache +EventTriggerCacheContext +EventTriggerCacheState +ExecutorCheckPerms_hook +ExecutorEnd_hook +ExecutorFinish_hook +ExecutorRun_hook +ExecutorStart_hook +ExitOnAnyError +ExplainOneQuery_hook +ExportInProgress +FastPathLocalUseCount +FastPathStrongRelationLocks +FatalError +FeBeWaitSet +FinishedSerializableTransactions +FirstCallSinceLastCheckpoint.ckpt_done +FirstSnapshotSet +FirstXactSnapshot +FrontendProtocol +GUCNestLevel +GUC_check_errcode_value +GUC_check_errdetail_string +GUC_check_errhint_string +GUC_check_errmsg_string +GUC_flex_fatal_errmsg +GUC_flex_fatal_jmp +GUC_yy_flex_debug +GUC_yyin +GUC_yyleng +GUC_yylineno +GUC_yyout +GUC_yytext +Geqo_effort +Geqo_generations +Geqo_pool_size +Geqo_seed +Geqo_selection_bias +GetBackgroundWorkerTypeByPid.result +GetConfigOption.buffer +GetConfigOptionResetString.buffer +GetConflictingVirtualXIDs.vxids +GetCurrentTimeUsec.cache_fsec +GetCurrentTimeUsec.cache_timezone +GetCurrentTimeUsec.cache_tm +GetCurrentTimeUsec.cache_ts +GetCurrentTimeUsec.cache_tz +GetLocalBufferStorage.LocalBufferContext +GetLocalBufferStorage.cur_block +GetLocalBufferStorage.next_buf_in_block +GetLocalBufferStorage.num_bufs_in_block +GetLocalBufferStorage.total_bufs_allocated +GetLockConflicts.vxids +GetPgClassDescriptor.pgclassdesc +GetPgIndexDescriptor.pgindexdesc +GetRunningTransactionData.CurrentRunningXactsData +GetSQLCurrentDate.cache_date +GetSQLCurrentDate.cache_mday +GetSQLCurrentDate.cache_mon +GetSQLCurrentDate.cache_year +GetStableLatestTransactionId.lxid +GetStableLatestTransactionId.stablexid +GetXLogBuffer.cachedPage +GetXLogBuffer.cachedPos +GinFuzzySearchLimit +GlobalVisCatalogRels +GlobalVisDataRels +GlobalVisSharedRels +GlobalVisTempRels +HandleParallelMessages.hpm_context +HaveCrashedWorker +HbaFileName +HistoricSnapshot +ILHead +IdentFileName +IdleInTransactionSessionTimeout +IdleInTransactionSessionTimeoutPending +IdleSessionTimeout +IdleSessionTimeoutPending +IgnoreSystemIndexes +InArchiveRecovery +InProgressBuf +InRecovery +InRedo +InitializingParallelWorker +InterruptHoldoffCount +InterruptPending +IntervalStyle +IsBackgroundWorker +IsBinaryUpgrade +IsForInput +IsPostmasterEnvironment +IsUnderPostmaster +KnownAssignedXids +KnownAssignedXidsValid +LWLockTrancheNames +LWLockTrancheNamesAllocated +LastRec +LatchWaitSet +ListenAddresses +ListenSocket +LoadedSSL +LocalBufHash +LocalBufferBlockPointers +LocalBufferDescriptors +LocalHotStandbyActive +LocalLatchData +LocalPredicateLockHash +LocalPromoteIsTriggered +LocalRecoveryInProgress +LocalRefCount +LocalXLogInsertAllowed +LockMethodLocalHash +LockMethodLockHash +LockMethodProcLockHash +LockTimeout +LogMemoryContextPending +LogRepWorkerWalRcvConn +Log_RotationAge +Log_RotationSize +Log_autovacuum_min_duration +Log_connections +Log_destination +Log_destination_string +Log_directory +Log_disconnections +Log_error_verbosity +Log_file_mode +Log_filename +Log_line_prefix +Log_truncate_on_rotation +Logging_collector +LogicalRepCtx +LogicalRepPartMap +LogicalRepPartMapContext +LogicalRepRelMap +LogicalRepRelMapContext +LogicalStreamingContext +LogstreamResult +LogwrtResult +MXactCache +MXactCacheMembers +MXactContext +MainLWLockArray +MaxBackends +MaxConnections +MdCxt +MergeAttributes.bogus_marker +MessageContext +MessageEncoding +Mode +MultiXactMemberCtlData +MultiXactOffsetCtlData +MultiXactState +MyAuxProcType +MyBEEntry +MyBackendId +MyBackendType +MyBgworkerEntry +MyCancelKey +MyDatabaseId +MyDatabaseTableSpace +MyFixedParallelState +MyLatch +MyLockNo +MyLockedGxact +MyLogicalRepWorker +MyPMChildSlot +MyProc +MyProcPid +MyProcPort +MyProcSignalSlot +MyReplicationSlot +MySerializableXact +MyStartTime +MyStartTimestamp +MySubscription +MySubscriptionValid +MyTriggerDepth +MyWalSnd +MyWorkerInfo +MyXactDidWrite +MyXactFlags +NBuffers +NLocBuffer +NUMCache +NUMCounter +NamedLWLockTrancheArray +NamedLWLockTrancheRequestArray +NamedLWLockTrancheRequests +NamedLWLockTrancheRequestsAllocated +NextEOXactTupleDescNum +NextRecordTypmod +None_Receiver +NotifyCtlData +Nulls +OldCommittedSxact +OldestActiveSnapshot +OldestMemberMXactId +OldestVisibleMXactId +OpClassCache +OprCacheHash +OprProofCacheHash +OuterUserId +OutputFileName +PGLC_localeconv.CurrentLocaleConv +PGLC_localeconv.CurrentLocaleConvAllocated +PG_exception_stack +PMSignalState +PageSetChecksumCopy.pageCopy +ParallelCurrentXids +ParallelLeaderBackendId +ParallelLeaderPid +ParallelMessagePending +ParallelWorkerNumber +Password_encryption +PgArch +PgArchCanRestart.last_pgarch_start_time +PgArchPID +PgReloadTime +PgStartTime +PgStatPID +PinCountWaitBuf +PortalContext +PortalHashTable +PostAuthDelay +PostPortNumber +PostmasterContext +PostmasterPid +PqCommBusy +PqCommMethods +PqCommReadingMsg +PqRecvBuffer +PqRecvLength +PqRecvPointer +PqSendBuffer +PqSendBufferSize +PqSendPointer +PqSendStart +PreAuthDelay +PredXact +PredicateLockHash +PredicateLockTargetHash +PreparedXactProcs +PrevCheckPointDistance +PrimaryConnInfo +PrimarySlotName +PrivateRefCountArray +PrivateRefCountClock +PrivateRefCountHash +PrivateRefCountOverflowed +ProcDiePending +ProcGlobal +ProcLastRecPtr +ProcSignal +ProcSignalBarrierPending +ProcStructLock +ProcessStandbyReplyMessage.fullyAppliedLastTime +ProcessSyncRequests.sync_in_progress +ProcessUtilitySlow.validnsps +ProcessUtility_hook +PromoteTriggerFile +QueryCancelHoldoffCount +QueryCancelPending +RWConflictPool +ReachedNormalRunning +ReadControlFile.wal_segsz_str +ReadRecPtr +ReceiveSharedInvalidMessages.messages +ReceiveSharedInvalidMessages.nextmsg +ReceiveSharedInvalidMessages.nummsgs +RecentXmin +RecordCacheArray +RecordCacheArrayLen +RecordCacheHash +RecordIdentifierArray +RecoveryConflictPending +RecoveryConflictReason +RecoveryConflictRetryable +RecoveryLockLists +RedoRecPtr +RedoStartLSN +RegisterBackgroundWorker.numworkers +RegisteredSnapshots +Reinit +RelationIdCache +RelfilenodeMapHash +ReplicationSlotCtl +ReservedBackends +ReservedRefCountEntry +ResourceRelease_callbacks +SLRUStats +SMgrRelationHash +SPI_processed +SPI_result +SPI_result_code_string.buf +SPI_tuptable +SSLCipherSuites +SSLECDHCurve +SSLPreferServerCiphers +SSL_context +SSL_initialized +SSLerrmessage.errbuf +Save_r +Save_t +SavedResourceOwnerDuringExport +SavedSerializableXact +ScratchPartitionLock +ScratchTargetTagHash +SecondarySnapshot +SecondarySnapshotData +SecurityRestrictionContext +SendStop +SerialSlruCtlData +SerializableXidHash +SessionReplicationRole +SessionUserId +SessionUserIsSuperuser +SetRoleIsActive +SharedBufHash +SharedFileSetInit.counter +SharedFileSetInit.registered_cleanup +SharedInvalidMessageCounter +SharedInvalidMessagesArray +ShmemBase +ShmemEnd +ShmemIndex +ShmemLock +ShmemSegHdr +ShmemVariableCache +Shutdown +ShutdownRequestPending +SizeVfdCache +SnapshotAnyData +SnapshotSelfData +StandbyMode +StandbyModeRequested +StartWorkerNeeded +StartupPID +StartupStatus +StatementTimeout +StoreAttrDefault.nulls +StrategyControl +StrongLockInProgress +SubTransCtlData +SubXact_callbacks +SyncRepConfig +SyncRepStandbyNames +SyncRepWaitMode +SysAtt +SysCache +SysCacheRelationOid +SysCacheRelationOidSize +SysCacheSupportingRelOid +SysCacheSupportingRelOidSize +SysLoggerPID +TSConfigCacheHash +TSCurrentConfig +TSCurrentConfigCache +TSDictionaryCacheHash +TSParserCacheHash +TableSpaceCacheHash +ThisTimeLineID +ToClientConvProc +ToServerConvProc +TopMemoryContext +TopPortalContext +TopTransactionContext +TopTransactionResourceOwner +TopTransactionStateData +Trace_notify +TransactionAbortContext +TransactionIdIsInProgress.other_xids +TransactionIdIsInProgress.xids +TransactionXmin +Transform_null_equals +TwoPhaseGetGXact.cached_gxact +TwoPhaseGetGXact.cached_xid +TwoPhaseState +Typ +TypeCacheHash +Unix_socket_directories +Unix_socket_group +Unix_socket_permissions +UsableBytesInSegment +UseSemiNewlineNewline +Utf8ToServerConvProc +VacuumActiveNWorkers +VacuumCostActive +VacuumCostBalance +VacuumCostBalanceLocal +VacuumCostDelay +VacuumCostLimit +VacuumCostPageDirty +VacuumCostPageHit +VacuumCostPageMiss +VacuumPageDirty +VacuumPageHit +VacuumPageMiss +VacuumSharedCostBalance +VfdCache +VoidString +WALInsertLockAcquire.lockToTry +WALInsertLocks +WaitForWALToBecomeAvailable.last_fail_time +WalRcv +WalReceiverFunctions +WalReceiverPID +WalReceiverRequested +WalSndCaughtUp +WalSndCtl +WalSndUpdateProgress.sendTime +WalSndWaitForWal.RecentFlushPtr +WalStats +WalWriterDelay +WalWriterFlushAfter +WalWriterPID +XLOGbuffers +XLogArchiveCommand +XLogArchiveMode +XLogArchiveTimeout +XLogBackgroundFlush.lastflush +XLogCtl +XLogReceiptSource +XLogReceiptTime +XLogSendLogical.flushPtr +XLogWalRcvSendHSFeedback.primary_has_standby_xmin +XLogWalRcvSendHSFeedback.sendTime +XLogWalRcvSendReply.flushPtr +XLogWalRcvSendReply.sendTime +XLogWalRcvSendReply.writePtr +XactCtlData +XactDeferrable +XactIsoLevel +XactLastCommitEnd +XactLastRecEnd +XactReadOnly +XactTopFullTransactionId +Xact_callbacks +_SPI_connected +_SPI_current +_SPI_stack +_SPI_stack_depth +_rand48_seed +abbrevcache +abortedRecPtr +acos_0_5 +activeCreationNamespace +activePathGeneration +activeSearchPath +activeTempCreationPending +active_local_updates +active_shared_updates +active_timeouts +addWrd.nres +addWrd.ntres +add_reloption.max_custom_options +addin_request_allowed +afterConstraints +afterTriggers +alarm_enabled +allProcs +all_timeouts +all_timeouts_initialized +allocatedDescs +allowSystemTableMods +amRegisteredListener +am_autovacuum_launcher +am_autovacuum_worker +am_cascading_walsender +am_db_walsender +am_walsender +anl_context +announce_next_takeover +application_name +archiveCleanupCommand +archiverStats +array_extra_data +asin_0_5 +assert_enabled +asyncQueueControl +atan_1_0 +atexit_callback_setup +attrtypes +autovac_refresh_stats.last_read +autovacuum_anl_scale +autovacuum_anl_thresh +autovacuum_freeze_max_age +autovacuum_max_workers +autovacuum_multixact_freeze_max_age +autovacuum_naptime +autovacuum_start_daemon +autovacuum_vac_cost_delay +autovacuum_vac_cost_limit +autovacuum_vac_ins_scale +autovacuum_vac_ins_thresh +autovacuum_vac_scale +autovacuum_vac_thresh +autovacuum_work_mem +avlauncher_needs_signal +awaitedLock +awaitedOwner +backendStatusSnapContext +backend_flush_after +backend_startup_complete +backtrace_functions +backtrace_symbol_list +backup_started_in_recovery +backup_streamed +backup_total +baseCreationNamespace +baseSearchPath +baseSearchPathValid +baseTempCreationPending +base_yyparse.yyloc_default +base_yyparse.yyval_default +beforeConstraints +before_shmem_exit_list +begininsert_called +bgwriterLaunched +bgwriter_flush_after +bgwriter_lru_maxpages +bgwriter_lru_multiplier +binary_upgrade_next_array_pg_type_oid +binary_upgrade_next_heap_pg_class_oid +binary_upgrade_next_index_pg_class_oid +binary_upgrade_next_mrng_array_pg_type_oid +binary_upgrade_next_mrng_pg_type_oid +binary_upgrade_next_pg_authid_oid +binary_upgrade_next_pg_enum_oid +binary_upgrade_next_pg_type_oid +binary_upgrade_next_toast_pg_class_oid +binary_upgrade_record_init_privs +block_size +blocking_autovacuum_proc +bonjour_name +boot_reldesc +boot_yy_flex_debug +boot_yychar +boot_yyin +boot_yyleng +boot_yylineno +boot_yylval +boot_yynerrs +boot_yyout +boot_yytext +bootstrap_data_checksum_version +bsysscan +btvacinfo +buffer_lists +bytea_output +bytesToHex.hex +cachedCommitLSN +cachedFetchXid +cachedFetchXidStatus +cached_db_hash +cached_expression_list +cached_role +cached_roles +catchupInterruptPending +check_function_bodies +check_password_hook +checkpoint_cycle_ctr +checkpoint_flush_after +ckpt_active +ckpt_cached_elapsed +ckpt_start_recptr +ckpt_start_time +client_connection_check_interval +client_encoding_string +client_min_messages +cluster_name +collation_cache +comboCids +comboHash +commitTsShared +compute_query_id +connsAllowed +constraint_exclusion +context_freelists +cookies +cookies_size +copybuf +cot_45 +cpu_index_tuple_cost +cpu_operator_cost +cpu_tuple_cost +create_ctas_internal.validnsps +create_upper_paths_hook +creating_extension +criticalRelcachesBuilt +criticalSharedRelcachesBuilt +csvlogFile +curConstraints +curFileTLI +curinsert_flags +currentCommandId +currentCommandIdUsed +currentEventTriggerState +currentSource +currentSubTransactionId +currentlyReindexedHeap +currentlyReindexedIndex +cursor_tuple_fraction +custom_options +custom_scan_methods +cv_sleep_target +dataExecPlaceToPageInternal.data +data_checksums +data_directory +data_directory_mode +data_sync_retry +datecache +datestyle_string +deadlockDetails +deadlock_state +debug_discard_caches +debug_query_string +default_freeze_min_age +default_freeze_table_age +default_multixact_freeze_min_age +default_multixact_freeze_table_age +default_statistics_target +default_table_access_method +default_tablespace +default_toast_compression +default_toast_compression_options +default_with_oids +degree_c_forty_five +degree_c_one +degree_c_one_half +degree_c_sixty +degree_c_thirty +degree_consts_set +deltacache +disable_cost +dispatch_table +doPageWrites +doRequestWalReceiverReply +doing_extended_query_message +drandom_seed +drandom_seed_set +dsm_control +dsm_control_handle +dsm_control_impl_private +dsm_control_mapped_size +dsm_init_done +dsm_main_space_begin +dsm_segment_list +dummy_spinlock +dummy_ssl_passwd_cb_called +dynamic_shared_memory_type +effective_cache_size +effective_io_concurrency +elapsed_min_unit +elevel +emit_log_hook +emode_for_corrupt_record.lastComplaint +enableFsync +enable_async_append +enable_bitmapscan +enable_bonjour +enable_gathermerge +enable_geqo +enable_hashagg +enable_hashjoin +enable_incremental_sort +enable_indexonlyscan +enable_indexscan +enable_material +enable_memoize +enable_mergejoin +enable_nestloop +enable_parallel_append +enable_parallel_hash +enable_partition_pruning +enable_partitionwise_aggregate +enable_partitionwise_join +enable_seqscan +enable_sort +enable_tidscan +entryExecPlaceToPage.data +eoxact_list +eoxact_list_len +eoxact_list_overflowed +error_context_stack +errordata +errordata_stack_depth +event_source +executeDateTimeMethod.fmt_str +executeDateTimeMethod.fmt_txt +expectedTLEs +explain_get_index_name_hook +exportedSnapshots +extensible_node_methods +external_pid_file +extra_float_digits +file_list +file_tail +filesetlist +find_rendezvous_variable.rendezvousHash +firstDomainTypeEntry +first_syslogger_file_time +flushedUpto +fmgr_hook +forceSyncCommit +force_parallel_mode +formatted_log_time +formatted_start_time +from_collapse_limit +fscxt +fullPageWrites +geqo_threshold +getWeights.ws +get_attavgwidth_hook +get_code_decomposition.x +get_config_unit_name.bbuf +get_config_unit_name.xbuf +get_index_stats_hook +get_object_property_data.prop_last +get_relation_info_hook +get_relation_stats_hook +get_stack_depth_rlimit.val +gin_pending_list_limit +gistGetFakeLSN.counter +gistGetFakeLSN.lastlsn +globalStats +gmtsub.gmtptr +got_SIGHUP +got_SIGUSR2 +got_STOPPING +got_deadlock_timeout +got_standby_deadlock_timeout +got_standby_lock_timeout +guc_dirty +guc_variables +hash_mem_multiplier +have_function_stats +have_xact_temporary_files +hdr_rdt +hdr_scratch +held_lwlocks +hist_entries +hist_start +holdingAllLocks +hot_standby_feedback +huge_page_size +huge_pages +icu_converter +ignore_checksum_failure +ignore_invalid_pages +ignore_till_sync +in_hot_standby +in_progress_list +in_progress_list_len +in_progress_list_maxlen +in_remote_transaction +in_restore_command +in_streamed_transaction +incoming_message +int64_div_fast_to_numeric.pow10 +integer_datetimes +internal_flush.last_reported_send_errno +invalid_page_tab +jit_above_cost +jit_debugging_support +jit_dump_bitcode +jit_enabled +jit_expressions +jit_inline_above_cost +jit_optimize_above_cost +jit_profiling_support +jit_provider +jit_tuple_deforming +join_collapse_limit +join_search_hook +jsonpath_yy_flex_debug +jsonpath_yyin +jsonpath_yyleng +jsonpath_yylineno +jsonpath_yyout +jsonpath_yyparse.yyval_default +jsonpath_yytext +label_file +label_provider_list +lag_tracker +lastFullPageWrites +lastSourceFailed +lastUsedConfig +lastUsedDictionary +lastUsedParser +last_assigned_kind +last_checkpoint_time +last_csv_file_name +last_file_name +last_pgstat_start_time +last_processing +last_reply_timestamp +last_roleid +last_roleid_is_super +last_sigterm_time +last_snapshot_lsn +last_snapshot_ts +last_status_len +last_used_seq +last_xlog_switch_time +latestObservedXid +lc_collate_is_c.result +lc_ctype_is_c.result +listenChannels +litbuf +lo_cleanup_needed +lo_compat_privileges +lo_heap_r +lo_index_r +localBackendStatusTable +localNumBackends +local_map +local_preload_libraries_string +locale_collate +locale_ctype +locale_messages +locale_monetary +locale_numeric +locale_time +localized_abbrev_days +localized_abbrev_months +localized_full_days +localized_full_months +lockAwaited +lock_files +lock_named_request_allowed +log_btree_build_stats +log_checkpoints +log_duration +log_executor_stats +log_hostname +log_line_prefix.log_line_number +log_line_prefix.log_my_pid +log_lock_waits +log_min_duration_sample +log_min_duration_statement +log_min_error_statement +log_min_messages +log_parameter_max_length +log_parameter_max_length_on_error +log_parser_stats +log_planner_stats +log_recovery_conflict_waits +log_replication_commands +log_statement +log_statement_sample_rate +log_statement_stats +log_temp_files +log_timezone +log_timezone_string +log_xact_sample_rate +logical_decoding_ctx +logical_decoding_work_mem +lsn_mapping +mainrdata_head +mainrdata_last +mainrdata_len +maintenance_io_concurrency +maintenance_work_mem +make_greater_string.suffixchar +make_greater_string.suffixcollation +matview_maintenance_depth +maxAllocatedDescs +maxCurConstraints +maxPossibleConstraints +maxSems +maxSharedInvalidMessagesArray +max_files_per_process +max_function_args +max_identifier_length +max_index_keys +max_locks_per_xact +max_logical_replication_workers +max_parallel_maintenance_workers +max_parallel_workers +max_parallel_workers_per_gather +max_predicate_locks_per_page +max_predicate_locks_per_relation +max_predicate_locks_per_xact +max_prepared_xacts +max_rdatas +max_registered_block_id +max_registered_buffers +max_replication_slots +max_safe_fds +max_slot_wal_keep_size_mb +max_stack_depth +max_stack_depth_bytes +max_standby_archive_delay +max_standby_streaming_delay +max_sync_workers_per_subscription +max_wal_senders +max_wal_size_mb +max_worker_processes +memory_units_hint +minRecoveryPoint +minRecoveryPointTLI +min_dynamic_shared_memory +min_parallel_index_scan_size +min_parallel_table_scan_size +min_wal_size_mb +missingContrecPtr +mxid_to_string.str +myTempNamespace +myTempNamespaceSubID +myTempToastNamespace +my_bio_methods +my_exec_path +nCurConstraints +nDeadlockDetails +nParallelCurrentXids +nPossibleConstraints +nUnreportedXids +nVisitedProcs +nWaitOrders +n_DCHCache +n_NUMCache +namespaceUser +namespace_search_path +need_initialization +needs_fmgr_hook +newNodeMacroHolder +nextFreeLocalBuf +nextLocalTransactionId +nextSemKey +nextTempTableSpace +next_rotation_time +nfile +nogc +notifyInterruptPending +noverify_checksums +numAllocatedDescs +numExternalFDs +numSems +numSharedInvalidMessagesArray +numTempTableSpaces +num_active_timeouts +num_columns_read +num_custom_options +num_guc_variables +num_held_lwlocks +num_rdatas +num_res +num_seq_scans +num_temp_buffers +num_word.buf +numattr +object_access_hook +oldSnapshotControl +old_snapshot_threshold +oldrs +on_commit_launcher_wakeup +on_commits +on_proc_exit_list +on_shmem_exit_list +one_minus_cos_60 +opCtx +openLogFile +openLogSegNo +openlog_done +openssl_tls_init_hook +outbuf_maxlen +output_message +overrideStack +parallel_leader_participation +parallel_setup_cost +parallel_tuple_cost +parsed_hba_context +parsed_hba_lines +parsed_ident_context +parsed_ident_lines +pcxt_list +pendingActions +pendingDeletes +pendingNotifies +pendingOps +pendingOpsCxt +pendingReindexedIndexes +pendingSyncHash +pendingUnlinks +pendingWalRcvRestart +pending_client_encoding +pending_local_updates +pending_shared_updates +pending_write_requests +per_line_ctx +pgBufferUsage +pgLastSessionReportTime +pgStatActiveTime +pgStatAddr +pgStatBlockReadTime +pgStatBlockWriteTime +pgStatDBHash +pgStatFunctions +pgStatLocalContext +pgStatRunningInCollector +pgStatSessionEndCause +pgStatSock +pgStatTabHash +pgStatTabList +pgStatTransactionIdleTime +pgStatXactCommit +pgStatXactRollback +pgStatXactStack +pgWalUsage +pg_TZDIR.done_tzdir +pg_TZDIR.tzdir +pg_comp_crc32c +pg_ctype_cache_list +pg_dir_create_mode +pg_file_create_mode +pg_flush_data.not_implemented_by_kernel +pg_flush_data.pagesize +pg_krb_caseins_users +pg_krb_server_keyfile +pg_mode_mask +pg_perm_setlocale.save_lc_ctype +pg_popcount32 +pg_popcount64 +pg_regex_collation +pg_regex_locale +pg_regex_strategy +pg_rusage_show.result +pg_strerror.errorstr_buf +pg_strtok_ptr +pg_xml_init_library.first_time +pgstat_report_stat.last_report +pgstat_send_wal.sendTime +pgstat_stat_directory +pgstat_stat_filename +pgstat_stat_tmpname +pgstat_temp_directory +pgstat_track_activities +pgstat_track_activity_query_size +pgstat_track_counts +pgstat_track_functions +phony_random_seed +pipe_eof_seen +pkglib_path +plan_cache_mode +plan_getrulebyoid +plan_getviewrule +planner_hook +pmState +possibleConstraints +post_parse_analyze_hook +postmaster_alive_fds +postmaster_possibly_dead +pq_mq_busy +pq_mq_handle +pq_mq_parallel_leader_backend_id +pq_mq_parallel_leader_pid +prepareGID +prepared_queries +prevWalUsage +primary_image_masked +procArray +proc_exit_inprogress +process_shared_preload_libraries_in_progress +process_syncing_tables_for_apply.last_start_times +process_syncing_tables_for_apply.table_states +promote_signaled +provider +provider_failed_loading +provider_successfully_loaded +ps_buffer +ps_buffer_cur_len +ps_buffer_fixed_size +ps_buffer_size +query_getrulebyoid +query_getviewrule +query_id_enabled +quote_all_identifiers +random_page_cost +rdatas +re_array +reachedConsistency +readFile +readLen +readOff +readSegNo +readSource +ready_to_stop +receiveTLI +recentMulti +recentXid +records +recoveryEndCommand +recoveryRestoreCommand +recoveryStopAfter +recoveryStopLSN +recoveryStopName +recoveryStopTime +recoveryStopXid +recoveryTarget +recoveryTargetAction +recoveryTargetInclusive +recoveryTargetLSN +recoveryTargetName +recoveryTargetTLI +recoveryTargetTLIRequested +recoveryTargetTime +recoveryTargetTimeLineGoal +recoveryTargetXid +recovery_init_sync_method +recovery_init_sync_method_options +recovery_min_apply_delay +recovery_signal_file_found +recovery_target_lsn_string +recovery_target_name_string +recovery_target_string +recovery_target_time_string +recovery_target_timeline_string +recovery_target_xid_string +recursion_depth +recvFile +recvFileTLI +recvSegNo +redirection_done +register_persistent_abort_backup_handler.already_done +registered_buffers +reindexingNestLevel +relOpts +relcacheInvalsReceived +relcache_callback_count +relcache_callback_list +relfilenode_skey +remote_final_lsn +remove_temp_files_after_crash +replSlotStatHash +repl_pushed_back_token +replay_image_masked +replication_active +replication_parse_result +replication_states +replication_states_ctl +replication_yy_flex_debug +replication_yychar +replication_yyin +replication_yyleng +replication_yylineno +replication_yylval +replication_yynerrs +replication_yyout +replication_yytext +replorigin_session_origin +replorigin_session_origin_lsn +replorigin_session_origin_timestamp +replorigin_session_setup.registered_cleanup +reply_message +report_needed +reporting_enabled +restart_after_crash +restoredFromArchive +reverse_dispatch_table +ri_compare_cache +ri_constraint_cache +ri_constraint_cache_valid_count +ri_constraint_cache_valid_list +ri_query_cache +role_string +roleid_callback_registered +rotation_disabled +rotation_requested +row_description_buf +row_description_context +row_security +row_security_policy_hook_permissive +row_security_policy_hook_restrictive +sanitize_char.buf +sanitize_str.buf +save_XactDeferrable +save_XactIsoLevel +save_XactReadOnly +save_argc +save_argv +save_format_domain +save_format_errnumber +save_pgBufferUsage +save_pgWalUsage +saved_plan_list +saved_timeval +saved_timeval_set +scan_locations +scanbuf +scanbufhandle +scanbuflen +scanstring +scram_mock_salt.sha_digest +segment_size +sendTimeLine +sendTimeLineIsHistoric +sendTimeLineNextTLI +sendTimeLineValidUpto +send_feedback.last_flushpos +send_feedback.last_recvpos +send_feedback.last_writepos +send_feedback.reply_message +send_feedback.send_time +sentPtr +seq_page_cost +seq_scan_level +seq_scan_tables +seqhashtab +serialControl +server_encoding_string +server_version_num +server_version_string +sessionBackupState +session_auth_is_superuser +session_authorization_string +session_preload_libraries_string +session_replication_state +session_timezone +set_join_pathlist_hook +set_rel_pathlist_hook +sharedSemas +shared_map +shared_memory_options +shared_memory_type +shared_preload_libraries_string +shmInvalBuffer +shmem_exit_inprogress +shmem_startup_hook +show_data_directory_mode.buf +show_log_file_mode.buf +show_tcp_keepalives_count.nbuf +show_tcp_keepalives_idle.nbuf +show_tcp_keepalives_interval.nbuf +show_tcp_user_timeout.nbuf +show_unix_socket_permissions.buf +shutdown_requested +signal_due_at +signal_fd +signal_pending +sin_30 +sizeComboCids +size_guc_variables +slruStats +slru_errcause +slru_errno +sock_paths +speculativeInsertionToken +spins_per_delay +ssl_ca_file +ssl_cert_file +ssl_crl_dir +ssl_crl_file +ssl_dh_params_file +ssl_is_server_start +ssl_key_file +ssl_library +ssl_loaded_verify_locations +ssl_max_protocol_version +ssl_min_protocol_version +ssl_passphrase_command +ssl_passphrase_command_supports_reload +ssl_renegotiation_limit +stack_base_ptr +standbySnapshotPendingXmin +standbyState +standbyWait_us +standby_signal_file_found +start_autovac_launcher +startptr +statrelpath +stmtStartTimestamp +str_time.buf +stream_fd +stream_xid +streamingDoneReceiving +streamingDoneSending +subxact_data +sync_cycle_ctr +sync_method +synchronize_seqscans +synchronous_commit +syncrep_parse_error_msg +syncrep_parse_result +syncrep_yy_flex_debug +syncrep_yychar +syncrep_yyin +syncrep_yyleng +syncrep_yylineno +syncrep_yylval +syncrep_yynerrs +syncrep_yyout +syncrep_yytext +syscache_callback_count +syscache_callback_links +syscache_callback_list +syslogFile +syslogPipe +syslog_facility +syslog_ident +syslog_ident_str +syslog_sequence_numbers +syslog_split_messages +table_recheck_autovac.reuse_stats +table_states_valid +tan_45 +tblspc_map_file +tcp_keepalives_count +tcp_keepalives_idle +tcp_keepalives_interval +tcp_user_timeout +tempFileCounter +tempTableSpaces +temp_file_limit +temp_tablespaces +temporary_files_size +throttled_last +throttling_counter +throttling_sample +time_units_hint +timestamptz_to_str.buf +timezone_abbreviations_string +timezone_cache +timezone_string +tm +tmpbuf +topoProcs +total_addin_request +total_checksum_failures +total_func_time +trace_recovery_messages +trace_sort +track_commit_timestamp +track_io_timing +track_wal_io_timing +transInvalInfo +tryAdvanceTail +tuplecid_data +tupledesc_id_counter +twophaseExitRegistered +uncommitted_enums +unlistenExitRegistered +unnamed_stmt_psrc +unowned_relns +unpack_sql_state.buf +unreportedXids +updateMinRecoveryPoint +update_process_title +usedComboCids +userDoption +vac_context +vac_strategy +vacuum.in_vacuum +vacuum_defer_cleanup_age +vacuum_failsafe_age +vacuum_freeze_min_age +vacuum_freeze_table_age +vacuum_multixact_failsafe_age +vacuum_multixact_freeze_min_age +vacuum_multixact_freeze_table_age +values +visitedProcs +waitOrderProcs +waitOrders +waiting +waiting_for_ping_response +wake_wal_senders +walStats +wal_block_size +wal_compression +wal_consistency_checking +wal_consistency_checking_string +wal_init_zero +wal_keep_size_mb +wal_level +wal_log_hints +wal_receiver_create_temp_slot +wal_receiver_status_interval +wal_receiver_timeout +wal_recycle +wal_retrieve_retry_interval +wal_segment_size +wal_sender_timeout +wal_skip_threshold +whereToSendOutput +work_mem +wrconn +write_csvlog.log_line_number +write_csvlog.log_my_pid +write_syslog.seq +xactStartTimestamp +xactStopTimestamp +xact_is_sampled +xact_started +xdbuf +xidhash +xloginsert_cxt +xlogreader +xmlbinary +xmloption +yy_buffer_stack +yy_buffer_stack_max +yy_buffer_stack_top +yy_c_buf_p +yy_did_buffer_switch_on_eof +yy_flex_debug +yy_hold_char +yy_init +yy_last_accepting_cpos +yy_last_accepting_state +yy_n_chars +yy_start +yy_start_state_list +yychar +yyin +yyleng +yyline +yylineno +yynerrs +yyout +yytext +zero_damaged_pages +zoneabbrevtbl diff --git a/ydb/library/yql/parser/pg_wrapper/verify.sh b/ydb/library/yql/parser/pg_wrapper/verify.sh new file mode 100755 index 0000000000..870a7ab93f --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/verify.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -u + +echo -n "Building library: " +ya make || exit $? + +echo -n "Checking static variables: " + +data=$(objdump libyql-parser-pg_wrapper.a -t | grep -E "\.data\.|\.bss\." | \ +grep -v -E "progname|pg_popcount32|pg_popcount64|pg_comp_crc32c|_ZN4NYqlL10GlobalInitE|BlockSig|StartupBlockSig|UnBlockSig" | \ +grep -v -E "local_my_wait_event_info|my_wait_event_info|maxSems|nextSemKey|numSems|sharedSemas|AnonymousShmem|AnonymousShmemSize" | \ +grep -v -E "UsedShmemSegAddr|UsedShmemSegID|_ZN4NYql11TVPtrHolder8InstanceE" | \ +grep -v -E "on_proc_exit_index|on_shmem_exit_index|before_shmem_exit_index") + +if [ ${#data} -eq 0 ]; then + echo "OK"; + exit 0; +fi + +cnt=$(echo "$data" | wc -l) + +echo "***GOT $cnt UNEXPECTED SYMBOLS***" +echo "$data" +exit 1; diff --git a/ydb/library/yql/parser/pg_wrapper/ya.make b/ydb/library/yql/parser/pg_wrapper/ya.make index d4bcf73770..7632b8ae55 100644 --- a/ydb/library/yql/parser/pg_wrapper/ya.make +++ b/ydb/library/yql/parser/pg_wrapper/ya.make @@ -124,6 +124,16 @@ ELSEIF (OS_WINDOWS) ) ENDIF() +# Service files must be listed as dependencies to be included in export +FILES( + copy_src.py + copy_src.sh + generate_kernels.py + generate_patch.sh + vars.txt + verify.sh +) + END() RECURSE( |