Replace BackendIds with 0-based ProcNumbers Marina Polyakova <m.polyakova@postgrespro.ru> master
authorTeodor Sigaev <teodor@sigaev.ru>
Tue, 2 Apr 2024 11:43:02 +0000 (14:43 +0300)
committerTeodor Sigaev <teodor@sigaev.ru>
Tue, 2 Apr 2024 11:43:02 +0000 (14:43 +0300)
.gitignore
meson.build [new file with mode: 0644]
plantuner.c

index 46eea3c..b09edda 100644 (file)
@@ -9,3 +9,4 @@ temp
 diffs
 etc
 results
+log/
diff --git a/meson.build b/meson.build
new file mode 100644 (file)
index 0000000..40324a1
--- /dev/null
@@ -0,0 +1,32 @@
+# Copyright (c) 2023, Postgres Professional
+
+plantuner_sources = files(
+  'plantuner.c'
+)
+
+if host_system == 'windows'
+  plantuner_sources += rc_lib_gen.process(win32ver_rc, extra_args: [
+    '--NAME', 'plantuner',
+    '--FILEDESC', 'plantuner - provides hints for the planner that can disable or enable indexes for query execution',])
+endif
+
+plantuner = shared_module('plantuner',
+  plantuner_sources,
+  kwargs: contrib_mod_args,
+)
+contrib_targets += plantuner
+
+install_data(
+  kwargs: contrib_data_args,
+)
+
+tests += {
+  'name': 'plantuner',
+  'sd': meson.current_source_dir(),
+  'bd': meson.current_build_dir(),
+  'regress': {
+    'sql': [
+      'plantuner',
+    ],
+  },
+}
index b22ef9c..e454698 100644 (file)
@@ -35,6 +35,9 @@
 #include <access/xact.h>
 #include <catalog/namespace.h>
 #include <catalog/pg_class.h>
+#if PG_VERSION_NUM >= 160000
+#include <nodes/miscnodes.h>
+#endif
 #include <nodes/pg_list.h>
 #include <optimizer/plancat.h>
 #include <storage/bufmgr.h>
 
 PG_MODULE_MAGIC;
 
+#if PG_VERSION_NUM >= 130000
+#define heap_open(r, l)                                        table_open(r, l)
+#define heap_close(r, l)                               table_close(r, l)
+#endif
+
 static int     nDisabledIndexes = 0;
 static Oid     *disabledIndexes = NULL;
 static char *disableIndexesOutStr = "";
@@ -94,7 +102,12 @@ indexesAssign(const char * newval, bool doit, GucSource source,
         * follow work could be done only in normal processing because of
         * accsess to system catalog
         */
-       if (MyBackendId == InvalidBackendId || !IsUnderPostmaster ||
+#if PG_VERSION_NUM >= 170000
+       if (MyProcNumber == INVALID_PROC_NUMBER ||
+#else
+       if (MyBackendId == InvalidBackendId ||
+#endif
+               !IsUnderPostmaster ||
                !IsTransactionState())
        {
                /* reset init state */
@@ -144,9 +157,23 @@ indexesAssign(const char * newval, bool doit, GucSource source,
        {
                char    *curname = (char *) lfirst(l);
 #if PG_VERSION_NUM >= 90200
-               Oid             indexOid = RangeVarGetRelid(
-                               makeRangeVarFromNameList(stringToQualifiedNameList(curname)),
-                                                                                       NoLock, true);
+               List    *cur_namelist;
+               Oid             indexOid;
+
+#if PG_VERSION_NUM >= 160000
+               ErrorSaveContext escontext = {T_ErrorSaveContext};
+
+               cur_namelist = stringToQualifiedNameList(curname, (Node *) &escontext);
+
+               /* bad name list syntax */
+               if (cur_namelist == NIL)
+                       continue;
+#else
+               cur_namelist = stringToQualifiedNameList(curname);
+#endif
+
+               indexOid = RangeVarGetRelid(makeRangeVarFromNameList(cur_namelist),
+                                                                       NoLock, true);
 #else
                Oid             indexOid = RangeVarGetRelid(
                                makeRangeVarFromNameList(stringToQualifiedNameList(curname)),