cohenjo / pg_idx_advisor

A PostgreSQL extension to analyze queries and give indexing advice.
50 stars 8 forks source link

Join clause crash and select distinct support #1

Open knodi opened 9 years ago

knodi commented 9 years ago

colin@pisces ~/pg_idx_advisor $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

colin@pisces ~/pg_idx_advisor $ pg_config BINDIR = /usr/lib/postgresql/9.3/bin DOCDIR = /usr/share/doc/postgresql-doc-9.3 HTMLDIR = /usr/share/doc/postgresql-doc-9.3 INCLUDEDIR = /usr/include/postgresql PKGINCLUDEDIR = /usr/include/postgresql INCLUDEDIR-SERVER = /usr/include/postgresql/9.3/server LIBDIR = /usr/lib PKGLIBDIR = /usr/lib/postgresql/9.3/lib LOCALEDIR = /usr/share/locale MANDIR = /usr/share/postgresql/9.3/man SHAREDIR = /usr/share/postgresql/9.3 SYSCONFDIR = /etc/postgresql-common PGXS = /usr/lib/postgresql/9.3/lib/pgxs/src/makefiles/pgxs.mk CONFIGURE = '--with-tcl' '--with-perl' '--with-python' '--with-pam' '--with-openssl' '--with-libxml' '--with-libxslt' '--with-tclconfig=/usr/lib/x86_64-linux-gnu/tcl8.6' '--with-includes=/usr/include/tcl8.6' 'PYTHON=/usr/bin/python' '--mandir=/usr/share/postgresql/9.3/man' '--docdir=/usr/share/doc/postgresql-doc-9.3' '--sysconfdir=/etc/postgresql-common' '--datarootdir=/usr/share/' '--datadir=/usr/share/postgresql/9.3' '--bindir=/usr/lib/postgresql/9.3/bin' '--libdir=/usr/lib/' '--libexecdir=/usr/lib/postgresql/' '--includedir=/usr/include/postgresql/' '--enable-nls' '--enable-integer-datetimes' '--enable-thread-safety' '--enable-debug' '--disable-rpath' '--with-ossp-uuid' '--with-gnu-ld' '--with-pgport=5432' '--with-system-tzdata=/usr/share/zoneinfo' 'CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -pie -I/usr/include/mit-krb5 -DLINUX_OOM_SCORE_ADJ=0 -fno-omit-frame-pointer' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -L/usr/lib/mit-krb5 -L/usr/lib/x86_64-linux-gnu/mit-krb5' '--with-krb5' '--with-gssapi' '--with-ldap' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' CC = gcc CPPFLAGS = -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.6 CFLAGS = -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -pie -I/usr/include/mit-krb5 -DLINUX_OOM_SCORE_ADJ=0 -fno-omit-frame-pointer -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g CFLAGS_SL = -fpic LDFLAGS = -L../../../src/common -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -L/usr/lib/mit-krb5 -L/usr/lib/x86_64-linux-gnu/mit-krb5 -Wl,--as-needed LDFLAGS_EX = LDFLAGS_SL = LIBS = -lpgport -lpgcommon -lxslt -lxml2 -lpam -lssl -lcrypto -lkrb5 -lcom_err -lgssapi_krb5 -lz -ledit -lcrypt -ldl -lm VERSION = PostgreSQL 9.3.8

colin@pisces ~/pg_idx_advisor $ make gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -pie -I/usr/include/mit-krb5 -DLINUX_OOM_SCORE_ADJ=0 -fno-omit-frame-pointer -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -fpic -I. -I./ -I/usr/include/postgresql/9.3/server -I/usr/include/postgresql/internal -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.6 -c -o src/idx_adviser.o src/idx_adviser.c src/idx_adviser.c:272:1: warning: variably modified ‘_compile_assert_array’ at file scope [enabled by default] compile_assert( ((Cost)-1) < 0 ); ^ src/idx_adviser.c: In function ‘index_adviser’: src/idx_adviser.c:362:3: error: too many arguments to function ‘OpernameGetCandidates’ for( opnosResult = OpernameGetCandidates( supop, '\0' , true); ^ In file included from src/idx_adviser.h:17:0, from src/idx_adviser.c:37: /usr/include/postgresql/9.3/server/catalog/namespace.h:78:26: note: declared here extern FuncCandidateList OpernameGetCandidates(List _names, char oprkind); ^ src/idx_adviser.c: In function ‘planner_callback’: src/idx_adviser.c:640:15: warning: variable ‘new_plan’ set but not used [-Wunused-but-set-variable] PlannedStmt new_plan; ^ src/idx_adviser.c: In function ‘ExplainOneQuery_callback’: src/idx_adviser.c:716:2: error: too many arguments to function ‘ExplainOnePlan’ ExplainOnePlan( actual_plan, into, stmt, queryString, params, &planduration); ^ In file included from src/idx_adviser.c:43:0: /usr/include/postgresql/9.3/server/commands/explain.h:76:13: note: declared here extern void ExplainOnePlan(PlannedStmt plannedstmt, IntoClause into, ^ src/idx_adviser.c:740:4: error: too many arguments to function ‘ExplainOnePlan’ ExplainOnePlan( new_plan, into, stmt, queryString, params, &planduration); ^ In file included from src/idx_adviser.c:43:0: /usr/include/postgresql/9.3/server/commands/explain.h:76:13: note: declared here extern void ExplainOnePlan(PlannedStmt plannedstmt, IntoClause into, ^ src/idx_adviser.c: In function ‘get_relation_info_callback’: src/idx_adviser.c:841:33: warning: assignment makes integer from pointer without a cast [enabled by default] info->canreturn = (bool ) palloc(sizeof(bool) * ncolumns); ^ src/idx_adviser.c:938:5: warning: implicit declaration of function ‘ChangeVarNodes’ [-Wimplicit-function-declaration] ChangeVarNodes((Node ) info->indexprs, 1, varno, 0); ^ src/idx_adviser.c:980:5: warning: passing argument 1 of ‘not_clause’ from incompatible pointer type [enabled by default] if(not_clause(opclause)) ^ In file included from src/utils.h:36:0, from src/idx_adviser.h:19, from src/idx_adviser.c:37: /usr/include/postgresql/9.3/server/optimizer/clauses.h:37:13: note: expected ‘struct Node ’ but argument is of type ‘struct OpExpr ’ extern bool not_clause(Node clause); ^ src/idx_adviser.c: In function ‘mark_used_candidates’: src/idx_adviser.c:1602:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] const bool used = (idxcd->idxoid == idxScan->indexid); ^ src/idx_adviser.c:1622:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] const bool used = (idxcd->idxoid == idxScan->indexid); ^ src/idx_adviser.c:1644:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] const bool used = idxcd->idxoid == bmiScan->indexid; ^ src/idx_adviser.c: In function ‘scan_query’: src/idx_adviser.c:1867:11: warning: passing argument 1 of ‘scan_query’ from incompatible pointer type [enabled by default] rangeTableStack)); ^ src/idxadviser.c:1839:14: note: expected ‘const struct Query * const’ but argument is of type ‘struct Node * const’ static List scan_query( const Query* const query, ^ src/idx_adviser.c:1895:8: warning: passing argument 1 of ‘scan_generic_node’ from incompatible pointer type [enabled by default] rangeTableStack)); ^ src/idx_adviser.c:78:14: note: expected ‘const struct Node * const’ but argument is of type ‘struct List * const’ static List* scan_generic_node( const Node* const root, ^ src/idx_adviser.c: In function ‘index_candidates_walker’: src/idx_adviser.c:2066:25: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] RelClause* rc = NULL; ^ src/idx_adviser.c:2070:25: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] char _varname = get_relid_attribute_name(rte->relid, e->varattno); ^ src/idx_adviser.c:2072:4: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] char token_str = strdup(idxadv_columns); ^ src/idx_adviser.c:2096:37: warning: passing argument 1 of ‘makePredicateClause’ from incompatible pointer type [enabled by default] rc->predicate = lappend(rc->predicate,(Expr )makePredicateClause((Expr ) root, (Const) s, (Var) f)); ^ src/idx_adviser.c:111:14: note: expected ‘struct OpExpr ’ but argument is of type ‘struct Expr ’ static Expr_ makePredicateClause(OpExpr* root,Const* constArg, Var* VarArg); ^ src/idxadviser.c:2098:37: warning: passing argument 1 of ‘makePredicateClause’ from incompatible pointer type [enabled by default] rc->predicate = lappend(rc->predicate,(Expr )makePredicateClause((Expr ) root, (Const) f, (Var) s)); ^ src/idxadviser.c:111:14: note: expected ‘struct OpExpr ’ but argument is of type ‘struct Expr ’ static Expr makePredicateClause(OpExpr* root,Const* constArg, Var* VarArg); ^ src/idxadviser.c:2110:37: warning: passing argument 1 of ‘makePredicateClause’ from incompatible pointer type [enabled by default] rc->predicate = lappend(rc->predicate,(Expr )makePredicateClause((Expr ) root, (Const) s, (Var) f)); ^ src/idx_adviser.c:111:14: note: expected ‘struct OpExpr ’ but argument is of type ‘struct Expr ’ static Expr_ makePredicateClause(OpExpr* root,Const* constArg, Var* VarArg); ^ src/idxadviser.c:2112:37: warning: passing argument 1 of ‘makePredicateClause’ from incompatible pointer type [enabled by default] rc->predicate = lappend(rc->predicate,(Expr )makePredicateClause((Expr ) root, (Const) f, (Var) s)); ^ src/idxadviser.c:111:14: note: expected ‘struct OpExpr ’ but argument is of type ‘struct Expr ’ static Expr makePredicateClause(OpExpr* root,Const* constArg, Var* VarArg); ^ src/idx_adviser.c:2156:5: warning: format ‘%d’ expects argument of type ‘int’, but argument 7 has type ‘double’ [-Wformat=] elog( DEBUG3 , "index candidate - here %d %d %d %d %d",RelationNeedsWAL(base_rel),!IsSystemRelation(base_rel),expr->varattno,base_rel->rd_rel->relpages,base_rel->rd_rel->reltuples); ^ src/idx_adviser.c:2288:6: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] char _varname = get_attname(rte->relid, ((Var )func_var)->varattno); ^ src/idx_adviser.c:2290:7: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘char ’ [-Wformat=] elog(ERROR, "cache lookup failed for attribute %d of relation %u",varname, rte->relid); ^ src/idx_adviser.c:2218:16: warning: unused variable ‘ind_elm’ [-Wunused-variable] IndexElem *ind_elm = palloc0(sizeof(IndexElem)); ^ src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Invalid’ not handled in switch [-Wswitch] switch( nodeTag( root ) ) ^ src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ExprContext’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ProjectionInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_JunkFilter’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ResultRelInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_EState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TupleTableSlot’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Plan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Result’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ModifyTable’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Append’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MergeAppend’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RecursiveUnion’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapAnd’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapOr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Scan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SeqScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexOnlyScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapIndexScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapHeapScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TidScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SubqueryScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FunctionScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ValuesScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CteScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WorkTableScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ForeignScan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Join’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NestLoop’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MergeJoin’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_HashJoin’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Material’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Sort’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Group’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Agg’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowAgg’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Unique’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Hash’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SetOp’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LockRows’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Limit’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NestLoopParam’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlanRowMark’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlanInvalItem’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ResultState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ModifyTableState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AppendState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MergeAppendState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RecursiveUnionState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapAndState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapOrState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SeqScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexOnlyScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapIndexScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapHeapScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TidScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SubqueryScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FunctionScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ValuesScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CteScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WorkTableScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ForeignScanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_JoinState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NestLoopState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MergeJoinState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_HashJoinState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MaterialState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SortState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_GroupState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AggState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowAggState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_UniqueState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_HashState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SetOpState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LockRowsState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LimitState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Alias’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RangeVar’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Expr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Const’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Param’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Aggref’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowFunc’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ArrayRef’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NamedArgExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DistinctExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NullIfExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ScalarArrayOpExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SubLink’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SubPlan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlternativeSubPlan’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FieldSelect’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FieldStore’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RelabelType’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoerceViaIO’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ArrayCoerceExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ConvertRowtypeExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CollateExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CaseExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CaseWhen’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CaseTestExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ArrayExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RowExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RowCompareExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoalesceExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MinMaxExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_XmlExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NullTest’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BooleanTest’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoerceToDomain’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoerceToDomainValue’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SetToDefault’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CurrentOfExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TargetEntry’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RangeTblRef’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_JoinExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FromExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IntoClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_GenericExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WholeRowVarExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AggrefExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowFuncExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ArrayRefExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FuncExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ScalarArrayOpExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BoolExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SubPlanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlternativeSubPlanState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FieldSelectState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FieldStoreState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoerceViaIOState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ArrayCoerceExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ConvertRowtypeExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CaseExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CaseWhenState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ArrayExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RowExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RowCompareExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoalesceExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MinMaxExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_XmlExprState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NullTestState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CoerceToDomainState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DomainConstraintState’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlannerInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlannerGlobal’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RelOptInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexOptInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ParamPathInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Path’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapHeapPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapAndPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitmapOrPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NestPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MergePath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_HashPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TidPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ForeignPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AppendPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MergeAppendPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ResultPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MaterialPath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_UniquePath’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_EquivalenceClass’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_EquivalenceMember’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PathKey’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RestrictInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlaceHolderVar’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SpecialJoinInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LateralJoinInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AppendRelInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlaceHolderInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MinMaxAggInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlannerParamItem’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_MemoryContext’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AllocSetContext’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Value’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Integer’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Float’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_String’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BitString’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Null’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_List’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IntList’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_OidList’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PlannedStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_InsertStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DeleteStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_UpdateStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SelectStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterTableStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterTableCmd’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterDomainStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SetOperationStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_GrantStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_GrantRoleStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterDefaultPrivilegesStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ClosePortalStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ClusterStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CopyStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DefineStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DropStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TruncateStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CommentStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FetchStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateFunctionStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterFunctionStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DoStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RenameStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RuleStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_NotifyStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ListenStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_UnlistenStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TransactionStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ViewStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LoadStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateDomainStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreatedbStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DropdbStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_VacuumStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ExplainStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateTableAsStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateSeqStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterSeqStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_VariableSetStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_VariableShowStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DiscardStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateTrigStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreatePLangStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateRoleStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterRoleStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DropRoleStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LockStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ConstraintsSetStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ReindexStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CheckPointStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateSchemaStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterDatabaseStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterDatabaseSetStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterRoleSetStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateConversionStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateCastStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateOpClassStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateOpFamilyStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterOpFamilyStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PrepareStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ExecuteStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DeallocateStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DeclareCursorStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateTableSpaceStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DropTableSpaceStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterObjectSchemaStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterOwnerStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DropOwnedStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ReassignOwnedStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CompositeTypeStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateEnumStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateRangeStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterEnumStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterTSDictionaryStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterTSConfigurationStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateFdwStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterFdwStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateForeignServerStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterForeignServerStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateUserMappingStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterUserMappingStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DropUserMappingStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterTableSpaceOptionsStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SecLabelStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateForeignTableStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateExtensionStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterExtensionStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterExtensionContentsStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateEventTrigStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AlterEventTrigStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RefreshMatViewStmt’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_A_Expr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ColumnRef’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ParamRef’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_A_Const’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FuncCall’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_A_Star’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_A_Indices’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_A_Indirection’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_A_ArrayExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ResTarget’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TypeCast’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CollateClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SortBy’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowDef’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RangeSubselect’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RangeFunction’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TypeName’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ColumnDef’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IndexElem’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_Constraint’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_DefElem’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RangeTblEntry’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_SortGroupClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_PrivGrantee’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FuncWithArgs’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_AccessPriv’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CreateOpClassItem’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TableLikeClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FunctionParameter’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_LockingClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_RowMarkClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_XmlSerialize’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WithClause’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_CommonTableExpr’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_IdentifySystemCmd’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_BaseBackupCmd’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_StartReplicationCmd’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TimeLineHistoryCmd’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TriggerData’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_EventTriggerData’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_ReturnSetInfo’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_WindowObjectData’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_TIDBitmap’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_InlineCodeBlock’ not handled in switch [-Wswitch] src/idx_adviser.c:1996:2: warning: enumeration value ‘T_FdwRoutine’ not handled in switch [-Wswitch] src/idx_adviser.c: In function ‘scan_generic_node’: src/idx_adviser.c:2379:34: warning: passing argument 1 of ‘query_or_expression_tree_walker’ discards ‘const’ qualifier from pointer target type [enabled by default] 0); ^ In file included from src/utils.h:35:0, from src/idx_adviser.h:19, from src/idx_adviser.c:37: /usr/include/postgresql/9.3/server/nodes/nodeFuncs.h:57:13: note: expected ‘struct Node ’ but argument is of type ‘const struct Node * const’ extern bool query_or_expression_tree_walker(Node node, bool (_walker) (), ^ src/idx_adviser.c: In function ‘merge_candidates’: src/idx_adviser.c:2516:12: warning: variable ‘prev2’ set but not used [-Wunused-but-set-variable] ListCell _prev2; ^ src/idx_adviser.c: In function ‘expand_inherited_candidates’: src/idx_adviser.c:2631:3: warning: implicit declaration of function ‘find_inheritance_children’ [-Wimplicit-function-declaration] inhOIDs = find_inheritance_children(cand->reloid, lockmode); ^ src/idx_adviser.c:2631:11: warning: assignment makes pointer from integer without a cast [enabled by default] inhOIDs = find_inheritance_children(cand->reloid, lockmode); ^ src/idx_adviser.c: At top level: src/idx_adviser.c:2694:13: warning: ‘expand_inherited_rel_clauses’ was used with no prototype before its definition [-Wmissing-prototypes] static void expand_inherited_rel_clauses() ^ src/idx_adviser.c: In function ‘expand_inherited_rel_clauses’: src/idx_adviser.c:2710:11: warning: assignment makes pointer from integer without a cast [enabled by default] inhOIDs = find_inheritance_children(cand->reloid, lockmode); ^ src/idx_adviser.c: In function ‘create_virtual_indexes’: src/idx_adviser.c:3046:48: warning: pointer/integer type mismatch in conditional expression [enabled by default] idxadv_text_pattern_ops?op_class[i] = 10049:NULL; ^ src/idx_adviser.c:3060:4: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘char ’ [-Wformat=] elog( DEBUG3, "col: %d, attrno: %d, opclass: %d", cand->varname[i],cand->varattno[i],op_class[i]); ^ src/idx_adviser.c:3081:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] Relation relation = heap_open( cand->reloid, AccessShareLock ); ^ src/idx_adviser.c: In function ‘makePredicateClause’: src/idx_adviser.c:3281:28: warning: passing argument 4 of ‘make_opclause’ from incompatible pointer type [enabled by default] root->opcollid, root->inputcollid); ^ In file included from src/utils.h:36:0, from src/idx_adviser.h:19, from src/idx_adviser.c:37: /usr/include/postgresql/9.3/server/optimizer/clauses.h:31:14: note: expected ‘struct Expr ’ but argument is of type ‘struct Var ’ extern Expr make_opclause(Oid opno, Oid opresulttype, bool opretset, ^ src/idx_adviser.c:3281:28: warning: passing argument 5 of ‘make_opclause’ from incompatible pointer type [enabled by default] root->opcollid, root->inputcollid); ^ In file included from src/utils.h:36:0, from src/idx_adviser.h:19, from src/idx_adviser.c:37: /usr/include/postgresql/9.3/server/optimizer/clauses.h:31:14: note: expected ‘struct Expr ’ but argument is of type ‘struct Const ’ extern Expr make_opclause(Oid opno, Oid opresulttype, bool opretset, ^ src/idx_adviser.c: In function ‘build_index_tlist’: src/idx_adviser.c:3320:33: warning: implicit declaration of function ‘SystemAttributeDefinition’ [-Wimplicit-function-declaration] att_tup = SystemAttributeDefinition(indexkey, ^ src/idx_adviser.c:3320:41: warning: assignment makes pointer from integer without a cast [enabled by default] att_tup = SystemAttributeDefinition(indexkey, ^ make: _* [src/idx_adviser.o] Error 1 colin@pisces ~/pg_idx_advisor $

JerrySievert commented 9 years ago

is there a specific version of postgres that this can be compiled against?

i could really use this functionality, but am getting the same errors with postgres 9.3, and ubuntu.

thanks!

JerrySievert commented 9 years ago

aha, it looks like ExplainOnePlan and OpernameGetCandidates changed arguments as part of 9.4 - testing a change that could work for prior to 9.4, will let you know if successful.

JerrySievert commented 9 years ago

change unsuccessful. may look further into it later.

is there a chance of getting this to work with 9.3 out of the box?

cohenjo commented 9 years ago

Hi All, Sorry for not answering earlier - I'm on the other side of the ocean :) The code currently compiles against the development version - there were added parameters which caused it to break.

Sorry for that. I moved the code from an internal GIT repo so i lost my version tags (9.2, 9.3 & 9.4) I'll try to add the required "#if" to support 9.4 & 9.3 - it's not a lot of places, so i hope i could get it out over the weekend...

disclaimer: I'm new to both PG development and git so i find it a little hard keeping track of versions plus adding new stuff in the extension - If anyone have suggestions how to best do it, I'm all ears :)

JerrySievert commented 9 years ago

using the #if syntax, while not optimal, tends to work. i appreciate your response, and look forward to using this extension.

knodi commented 9 years ago

Thanks for any and all effort, cohenjo

cohenjo commented 9 years ago

Hi, I've added the necessary #if - It now works for 9.3.9, 9.4.4 and the current devel branch. I should note that internal APIs tend to change even between minor versions so it's possible that it might not work for 9.3.7 or something like this.

I'd appreciate if you could try again and tell me if it fixed the compilation issues.

JerrySievert commented 9 years ago

compiles on 9.3.2 (the most current we have in production), but crashes:

(a whole lot of logs) ...
DEBUG:  IND ADV: compare_candidates: ENTER
DEBUG:  IDX_ADV: candidate compare returns: 22
DEBUG:  IND ADV: compare_candidates: ENTER
DEBUG:  IDX_ADV: candidate compare returns: 15
DEBUG:  IND ADV: compare_candidates: ENTER
DEBUG:  IDX_ADV: candidate compare returns: -1259
DEBUG:  IDX_ADV: so far we have: 3
DEBUG:  IND ADV: log_candidates: enter
DEBUG:  IND ADV: so far: : |3| { 38883_(0), 38883_(7), 38883_(22) }
DEBUG:  IDX_ADV: free current candidate lists
DEBUG:  IDX_ADV: free current candidate list1
DEBUG:  IDX_ADV: free current candidate list2
DEBUG:  IND ADV: log_candidates: enter
DEBUG:  IND ADV: merged-list: |6| { 38883_(0), 38883_(7), 38883_(22), 40142_(0), 40142_(2), 40142_(4) }
DEBUG:  IND ADV: merge_candidates: EXIT
DEBUG:  expand_inherited_candidates: Enter - length: 6
DEBUG:  expand_inherited_candidates: inh expending
The connection to the server was lost. Attempting reset: Failed.
JerrySievert commented 9 years ago

this was the same behavior i got when i tried myself to get it working on 9.3.2.

cohenjo commented 9 years ago

I'd appreciate if you could post your sql and table definition so I could debug.

JerrySievert commented 9 years ago

unfortunately, it's a very proprietary application, so i cannot post what you request, but i will work to get you a crashing example that i can share.

cohenjo commented 9 years ago

Hi Jerry, Thanks, I'd appreciate if you could create a generalized SQL sample that crashes. PG Yum repository (I develop on Fedora) only holds 9.3.6 and above - I'll try to look for earlier version to see if I could spot anything on simple test cases.

Again, if you could point me in your error direction it will be helpful :) Regards,

JerrySievert commented 9 years ago

i compiled from source - still looking, but most likely won't have a good crash case until i get back to the office tomorrow.

JerrySievert commented 9 years ago

this is a query that causes the crash:

EXPLAIN SELECT DISTINCT ON ("trigger_key") "triggers".*
FROM "triggers"
INNER JOIN "tags" ON ("tags"."trigger_id" = "triggers"."id")
WHERE (("triggers"."application_id" = ?)
  AND ("triggers"."client_id" = ?)
  AND (upper(substring("triggers"."client_id", 1, 1)) = ?)
  AND ("tags"."client_id" = ?)
  AND (upper(substring("tags"."client_id", 1, 1)) = ?))

both the tags and triggers table are partitioned on the UPPER(SUBSTRING(client_id, 1, 1))

cohenjo commented 9 years ago

Hi, 2 more items for my ever growing todo list :)

  1. BUGFIX: there is a problem with the Join clause.
  2. Enhancment: support "DISTINCT ON "
JerrySievert commented 9 years ago

glad to be of help :)