X-Git-Url: http://sigaev.ru/git/gitweb.cgi?p=plantuner.git;a=blobdiff_plain;f=plantuner.c;h=3c5c6c7dbe5e495ccc2ff16de12a2ebfb6695da4;hp=050e3b7d32f9a703d4e7bbc384e9c9d3440d7ccd;hb=3c3fe972db47384cef46dbf3f286bda95667d867;hpb=0ed6fd76935293b13647a5bd59aff23e9b1029f5 diff --git a/plantuner.c b/plantuner.c index 050e3b7..3c5c6c7 100644 --- a/plantuner.c +++ b/plantuner.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -77,6 +78,23 @@ indexesAssign(const char * newval, bool doit, GucSource source, bool isDisable) if (!SplitIdentifierString(rawname, ',', &namelist)) goto cleanup; + /* + * follow work could be done only in normal processing because of + * accsess to system catalog + */ + if (MyBackendId == InvalidBackendId || !IsUnderPostmaster || + !IsNormalProcessingMode() || MyAuxProcType != NotAnAuxProcess || + !IsTransactionState()) + { + /* reset init state */ + if (isDisable) + plantuner_disable_inited = false; + else + plantuner_enable_inited = false; + + return newval; + } + if (doit) { nOids = list_length(namelist); @@ -86,14 +104,6 @@ indexesAssign(const char * newval, bool doit, GucSource source, bool isDisable) (int)(sizeof(Oid) * (nOids+1))); } - /* - * follow work could be done only in normal processing because of - * accsess to system catalog - */ - if (MyBackendId == InvalidBackendId || !IsUnderPostmaster || - !IsNormalProcessingMode() || MyAuxProcType != NotAnAuxProcess) - return newval; - if (isDisable) plantuner_disable_inited = true; else