diff --git a/src/loader/loader.c b/src/loader/loader.c index fb29a8184..d993ba305 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -99,8 +99,16 @@ should_load_on_variable_set(Node *utility_stmt) { VariableSetStmt *stmt = (VariableSetStmt *) utility_stmt; - /* Do not load when setting the guc */ - return strcmp(stmt->name, GUC_DISABLE_LOAD_NAME) != 0; + switch (stmt->kind) + { + case VAR_SET_VALUE: + case VAR_SET_DEFAULT: + case VAR_RESET: + /* Do not load when setting the guc to disable load */ + return stmt->name == NULL || strcmp(stmt->name, GUC_DISABLE_LOAD_NAME) != 0; + default: + return true; + } } static bool diff --git a/test/expected/loader.out b/test/expected/loader.out index dfad836e7..065efce1c 100644 --- a/test/expected/loader.out +++ b/test/expected/loader.out @@ -154,6 +154,48 @@ SET timescaledb.disable_load = 'not bool'; WARNING: mock post_analyze_hook "mock-1" ERROR: parameter "timescaledb.disable_load" requires a Boolean value \set ON_ERROR_STOP 1 +\c single :ROLE_SUPERUSER +RESET ALL; +WARNING: mock init "mock-1" +WARNING: mock post_analyze_hook "mock-1" +SELECT 1; +WARNING: mock post_analyze_hook "mock-1" + ?column? +---------- + 1 +(1 row) + +\c single :ROLE_SUPERUSER +SET timescaledb.disable_load TO DEFAULT; +SELECT 1; +WARNING: mock init "mock-1" +WARNING: mock post_analyze_hook "mock-1" + ?column? +---------- + 1 +(1 row) + +\c single :ROLE_SUPERUSER +RESET timescaledb.disable_load; +SELECT 1; +WARNING: mock init "mock-1" +WARNING: mock post_analyze_hook "mock-1" + ?column? +---------- + 1 +(1 row) + +\c single :ROLE_SUPERUSER +SET timescaledb.other = 'on'; +WARNING: mock init "mock-1" +WARNING: mock post_analyze_hook "mock-1" +SELECT 1; +WARNING: mock post_analyze_hook "mock-1" + ?column? +---------- + 1 +(1 row) + \set ON_ERROR_STOP 0 --cannot update extension after .so of previous version already loaded ALTER EXTENSION timescaledb UPDATE TO 'mock-2'; diff --git a/test/sql/loader.sql b/test/sql/loader.sql index 926b92286..5c6ac837c 100644 --- a/test/sql/loader.sql +++ b/test/sql/loader.sql @@ -52,6 +52,21 @@ SELECT 1; SET timescaledb.disable_load = 'not bool'; \set ON_ERROR_STOP 1 +\c single :ROLE_SUPERUSER +RESET ALL; +SELECT 1; + +\c single :ROLE_SUPERUSER +SET timescaledb.disable_load TO DEFAULT; +SELECT 1; + +\c single :ROLE_SUPERUSER +RESET timescaledb.disable_load; +SELECT 1; + +\c single :ROLE_SUPERUSER +SET timescaledb.other = 'on'; +SELECT 1; \set ON_ERROR_STOP 0 --cannot update extension after .so of previous version already loaded