mirror of https://github.com/citusdata/citus.git
Support upgrade and downgrade for current citus customer
parent
2bc491303f
commit
5b01917e12
|
@ -9,7 +9,8 @@ OBJS += \
|
||||||
|
|
||||||
MODULE_big = citus_columnar
|
MODULE_big = citus_columnar
|
||||||
EXTENSION = citus_columnar
|
EXTENSION = citus_columnar
|
||||||
DATA = $(wildcard sql/*--*.sql)
|
DATA = $(wildcard sql/*--*.sql) \
|
||||||
|
$(wildcard sql/downgrades/*--*.sql)
|
||||||
PG_CPPFLAGS += -I$(libpq_srcdir) -I$(safestringlib_srcdir)/include
|
PG_CPPFLAGS += -I$(libpq_srcdir) -I$(safestringlib_srcdir)/include
|
||||||
|
|
||||||
ifdef USE_PGXS
|
ifdef USE_PGXS
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Columnar extension
|
# Columnar extension
|
||||||
comment = 'Citus Columnar extension'
|
comment = 'Citus Columnar extension'
|
||||||
default_version = '11.1-2'
|
default_version = '11.2-1'
|
||||||
module_pathname = '$libdir/citus_columnar'
|
module_pathname = '$libdir/citus_columnar'
|
||||||
relocatable = false
|
relocatable = false
|
||||||
schema = pg_catalog
|
schema = pg_catalog
|
|
@ -27,6 +27,7 @@
|
||||||
#include "catalog/pg_extension.h"
|
#include "catalog/pg_extension.h"
|
||||||
#include "catalog/storage.h"
|
#include "catalog/storage.h"
|
||||||
#include "catalog/storage_xlog.h"
|
#include "catalog/storage_xlog.h"
|
||||||
|
#include "commands/defrem.h"
|
||||||
#include "commands/progress.h"
|
#include "commands/progress.h"
|
||||||
#include "commands/vacuum.h"
|
#include "commands/vacuum.h"
|
||||||
#include "commands/extension.h"
|
#include "commands/extension.h"
|
||||||
|
@ -57,6 +58,7 @@
|
||||||
#include "columnar/columnar_tableam.h"
|
#include "columnar/columnar_tableam.h"
|
||||||
#include "columnar/columnar_version_compat.h"
|
#include "columnar/columnar_version_compat.h"
|
||||||
#include "distributed/listutils.h"
|
#include "distributed/listutils.h"
|
||||||
|
#include "distributed/deparser.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Timing parameters for truncate locking heuristics.
|
* Timing parameters for truncate locking heuristics.
|
||||||
|
@ -2135,6 +2137,52 @@ ColumnarProcessUtility(PlannedStmt *pstmt,
|
||||||
RelationClose(rel);
|
RelationClose(rel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsA(parsetree, CreateExtensionStmt))
|
||||||
|
{
|
||||||
|
CreateExtensionStmt *createExtensionStmt = castNode(CreateExtensionStmt,
|
||||||
|
parsetree);
|
||||||
|
if (strcmp(createExtensionStmt->extname, "citus_columnar") == 0)
|
||||||
|
{
|
||||||
|
DefElem *newVersionValue = GetExtensionOption(createExtensionStmt->options,
|
||||||
|
"new_version");
|
||||||
|
if (newVersionValue)
|
||||||
|
{
|
||||||
|
const char *newVersion = defGetString(newVersionValue);
|
||||||
|
if (strcmp(newVersion, "11.1-0") == 0)
|
||||||
|
{
|
||||||
|
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("unsupported citus_columnar version 11.1-0")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*latest citus requires install columnar first, existing citus can only be an older version */
|
||||||
|
if (get_extension_oid("citus", true) != InvalidOid)
|
||||||
|
{
|
||||||
|
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("must upgrade citus to version 11.2-1 first")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsA(parsetree, AlterExtensionStmt))
|
||||||
|
{
|
||||||
|
AlterExtensionStmt *alterExtensionStmt = castNode(AlterExtensionStmt, parsetree);
|
||||||
|
if (strcmp(alterExtensionStmt->extname, "citus_columnar") == 0)
|
||||||
|
{
|
||||||
|
DefElem *newVersionValue = GetExtensionOption(alterExtensionStmt->options,
|
||||||
|
"new_version");
|
||||||
|
if (newVersionValue)
|
||||||
|
{
|
||||||
|
const char *newVersion = defGetString(newVersionValue);
|
||||||
|
if (strcmp(newVersion, "11.1-0") == 0)
|
||||||
|
{
|
||||||
|
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("unsupported citus_columnar version 11.1-0")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PrevProcessUtilityHook_compat(pstmt, queryString, false, context,
|
PrevProcessUtilityHook_compat(pstmt, queryString, false, context,
|
||||||
params, queryEnv, dest, completionTag);
|
params, queryEnv, dest, completionTag);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- add columnar objects back
|
||||||
|
|
||||||
|
ALTER EXTENSION citus_columnar ADD SCHEMA columnar;
|
||||||
|
ALTER EXTENSION citus_columnar ADD SEQUENCE columnar.storageid_seq;
|
||||||
|
ALTER EXTENSION citus_columnar ADD TABLE columnar.options;
|
||||||
|
ALTER EXTENSION citus_columnar ADD TABLE columnar.stripe;
|
||||||
|
ALTER EXTENSION citus_columnar ADD TABLE columnar.chunk_group;
|
||||||
|
ALTER EXTENSION citus_columnar ADD TABLE columnar.chunk;
|
||||||
|
DO $proc$
|
||||||
|
BEGIN
|
||||||
|
-- columnar functions
|
||||||
|
IF substring(current_Setting('server_version'), '\d+')::int >= 12 THEN
|
||||||
|
EXECUTE $$
|
||||||
|
ALTER EXTENSION citus_columnar ADD FUNCTION columnar.columnar_handler;
|
||||||
|
ALTER EXTENSION citus_columnar ADD ACCESS METHOD columnar;
|
||||||
|
ALTER EXTENSION citus_columnar ADD FUNCTION pg_catalog.alter_columnar_table_set;
|
||||||
|
ALTER EXTENSION citus_columnar ADD FUNCTION pg_catalog.alter_columnar_table_reset;
|
||||||
|
$$;
|
||||||
|
END IF;
|
||||||
|
END$proc$;
|
||||||
|
ALTER EXTENSION citus_columnar ADD FUNCTION citus_internal.upgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus_columnar ADD FUNCTION citus_internal.downgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus_columnar ADD FUNCTION citus_internal.columnar_ensure_am_depends_catalog;
|
|
@ -0,0 +1 @@
|
||||||
|
-- fake sql file 'Y'
|
|
@ -28,5 +28,5 @@ $$;
|
||||||
#include "udfs/downgrade_columnar_storage/10.2-1.sql"
|
#include "udfs/downgrade_columnar_storage/10.2-1.sql"
|
||||||
|
|
||||||
-- upgrade storage for all columnar relations
|
-- upgrade storage for all columnar relations
|
||||||
SELECT citus_internal.upgrade_columnar_storage(c.oid) FROM pg_class c, pg_am a
|
PERFORM citus_internal.upgrade_columnar_storage(c.oid) FROM pg_class c, pg_am a
|
||||||
WHERE c.relam = a.oid AND amname = 'columnar';
|
WHERE c.relam = a.oid AND amname = 'columnar';
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
#include "udfs/columnar_ensure_am_depends_catalog/10.2-4.sql"
|
#include "udfs/columnar_ensure_am_depends_catalog/10.2-4.sql"
|
||||||
|
|
||||||
SELECT citus_internal.columnar_ensure_am_depends_catalog();
|
PERFORM citus_internal.columnar_ensure_am_depends_catalog();
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
-- detach relations from citus_columnar
|
||||||
|
|
||||||
|
ALTER EXTENSION citus_columnar DROP SCHEMA columnar;
|
||||||
|
ALTER EXTENSION citus_columnar DROP SEQUENCE columnar.storageid_seq;
|
||||||
|
-- columnar tables
|
||||||
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.options;
|
||||||
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.stripe;
|
||||||
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.chunk_group;
|
||||||
|
ALTER EXTENSION citus_columnar DROP TABLE columnar.chunk;
|
||||||
|
|
||||||
|
DO $proc$
|
||||||
|
BEGIN
|
||||||
|
-- columnar functions
|
||||||
|
IF substring(current_Setting('server_version'), '\d+')::int >= 12 THEN
|
||||||
|
EXECUTE $$
|
||||||
|
ALTER EXTENSION citus_columnar DROP FUNCTION columnar.columnar_handler;
|
||||||
|
ALTER EXTENSION citus_columnar DROP ACCESS METHOD columnar;
|
||||||
|
ALTER EXTENSION citus_columnar DROP FUNCTION pg_catalog.alter_columnar_table_set;
|
||||||
|
ALTER EXTENSION citus_columnar DROP FUNCTION pg_catalog.alter_columnar_table_reset;
|
||||||
|
$$;
|
||||||
|
END IF;
|
||||||
|
END$proc$;
|
||||||
|
|
||||||
|
-- functions under citus_internal for columnar
|
||||||
|
ALTER EXTENSION citus_columnar DROP FUNCTION citus_internal.upgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus_columnar DROP FUNCTION citus_internal.downgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus_columnar DROP FUNCTION citus_internal.columnar_ensure_am_depends_catalog;
|
|
@ -16,7 +16,6 @@ generated_sql_files = $(patsubst %,$(citus_abs_srcdir)/build/%,$(template_sql_fi
|
||||||
generated_downgrade_sql_files += $(patsubst %,$(citus_abs_srcdir)/build/sql/%,$(template_downgrade_sql_files))
|
generated_downgrade_sql_files += $(patsubst %,$(citus_abs_srcdir)/build/sql/%,$(template_downgrade_sql_files))
|
||||||
# All citus--*.sql files that are used to upgrade between versions
|
# All citus--*.sql files that are used to upgrade between versions
|
||||||
DATA_built = $(generated_sql_files)
|
DATA_built = $(generated_sql_files)
|
||||||
DATA = citus--11.1-2.control
|
|
||||||
# directories with source files
|
# directories with source files
|
||||||
SUBDIRS = . commands connection ddl deparser executor metadata operations planner progress relay safeclib test transaction utils worker
|
SUBDIRS = . commands connection ddl deparser executor metadata operations planner progress relay safeclib test transaction utils worker
|
||||||
# enterprise modules
|
# enterprise modules
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
# Citus extension 11.1-2
|
|
||||||
relocatable = false
|
|
||||||
schema = pg_catalog
|
|
||||||
requires = 'citus_columnar'
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Citus extension
|
# Citus extension
|
||||||
comment = 'Citus distributed database'
|
comment = 'Citus distributed database'
|
||||||
default_version = '11.1-2'
|
default_version = '11.2-1'
|
||||||
module_pathname = '$libdir/citus'
|
module_pathname = '$libdir/citus'
|
||||||
relocatable = false
|
relocatable = false
|
||||||
schema = pg_catalog
|
schema = pg_catalog
|
||||||
|
requires = 'citus_columnar'
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
|
#include "access/xact.h"
|
||||||
#include "citus_version.h"
|
#include "citus_version.h"
|
||||||
#include "catalog/pg_extension_d.h"
|
#include "catalog/pg_extension_d.h"
|
||||||
#include "commands/defrem.h"
|
#include "commands/defrem.h"
|
||||||
|
@ -842,3 +842,67 @@ AlterExtensionUpdateStmtObjectAddress(Node *node, bool missing_ok)
|
||||||
|
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CreateExtensionWithVersion builds and execute create extension statements
|
||||||
|
* per given extension name and extension verision
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
CreateExtensionWithVersion(const char *extname, const char *extVersion)
|
||||||
|
{
|
||||||
|
CreateExtensionStmt *createExtensionStmt = makeNode(CreateExtensionStmt);
|
||||||
|
|
||||||
|
/* set location to -1 as it is unknown */
|
||||||
|
int location = -1;
|
||||||
|
|
||||||
|
/* set extension name and if_not_exists fields */
|
||||||
|
createExtensionStmt->extname = extname;
|
||||||
|
createExtensionStmt->if_not_exists = true;
|
||||||
|
|
||||||
|
if (extVersion == NULL)
|
||||||
|
{
|
||||||
|
createExtensionStmt->options = NIL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Node *extensionVersionArg = (Node *) makeString(extVersion);
|
||||||
|
DefElem *extensionVersionElement = makeDefElem("new_version", extensionVersionArg,
|
||||||
|
location);
|
||||||
|
createExtensionStmt->options = lappend(createExtensionStmt->options,
|
||||||
|
extensionVersionElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
CreateExtension(NULL, createExtensionStmt);
|
||||||
|
CommandCounterIncrement();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AlterExtensionUpdateStmt builds and execute Alter extension statements
|
||||||
|
* per given extension name and updates extension verision
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
AlterExtensionUpdateStmt(const char *extname, const char *extVersion)
|
||||||
|
{
|
||||||
|
AlterExtensionStmt *alterExtensionStmt = makeNode(AlterExtensionStmt);
|
||||||
|
|
||||||
|
/* set location to -1 as it is unknown */
|
||||||
|
int location = -1;
|
||||||
|
alterExtensionStmt->extname = extname;
|
||||||
|
|
||||||
|
if (extVersion == NULL)
|
||||||
|
{
|
||||||
|
ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT),
|
||||||
|
errmsg("alter extension \"%s\" should not be empty",
|
||||||
|
extVersion)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Node *extensionVersionArg = (Node *) makeString(extVersion);
|
||||||
|
DefElem *extensionVersionElement = makeDefElem("new_version", extensionVersionArg,
|
||||||
|
location);
|
||||||
|
alterExtensionStmt->options = lappend(alterExtensionStmt->options,
|
||||||
|
extensionVersionElement);
|
||||||
|
ExecAlterExtensionStmt(NULL, alterExtensionStmt);
|
||||||
|
CommandCounterIncrement();
|
||||||
|
}
|
||||||
|
|
|
@ -38,8 +38,10 @@
|
||||||
#endif
|
#endif
|
||||||
#include "catalog/catalog.h"
|
#include "catalog/catalog.h"
|
||||||
#include "catalog/dependency.h"
|
#include "catalog/dependency.h"
|
||||||
|
#include "citus_version.h"
|
||||||
#include "commands/dbcommands.h"
|
#include "commands/dbcommands.h"
|
||||||
#include "commands/defrem.h"
|
#include "commands/defrem.h"
|
||||||
|
#include "commands/extension.h"
|
||||||
#include "commands/tablecmds.h"
|
#include "commands/tablecmds.h"
|
||||||
#include "distributed/adaptive_executor.h"
|
#include "distributed/adaptive_executor.h"
|
||||||
#include "distributed/colocation_utils.h"
|
#include "distributed/colocation_utils.h"
|
||||||
|
@ -71,6 +73,7 @@
|
||||||
#include "lib/stringinfo.h"
|
#include "lib/stringinfo.h"
|
||||||
#include "nodes/parsenodes.h"
|
#include "nodes/parsenodes.h"
|
||||||
#include "nodes/pg_list.h"
|
#include "nodes/pg_list.h"
|
||||||
|
#include "nodes/makefuncs.h"
|
||||||
#include "tcop/utility.h"
|
#include "tcop/utility.h"
|
||||||
#include "utils/builtins.h"
|
#include "utils/builtins.h"
|
||||||
#include "utils/lsyscache.h"
|
#include "utils/lsyscache.h"
|
||||||
|
@ -193,6 +196,20 @@ multi_ProcessUtility(PlannedStmt *pstmt,
|
||||||
ErrorIfUnstableCreateOrAlterExtensionStmt(parsetree);
|
ErrorIfUnstableCreateOrAlterExtensionStmt(parsetree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsA(parsetree, CreateExtensionStmt))
|
||||||
|
{
|
||||||
|
/*CREATE EXTENSION CITUS (version Z) */
|
||||||
|
CreateExtensionStmt *createExtensionStmt = castNode(CreateExtensionStmt,
|
||||||
|
parsetree);
|
||||||
|
if (strcmp(createExtensionStmt->extname, "citus") == 0)
|
||||||
|
{
|
||||||
|
if (get_extension_oid("citus_columnar", true) == InvalidOid)
|
||||||
|
{
|
||||||
|
CreateExtensionWithVersion("citus_columnar", NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!CitusHasBeenLoaded())
|
if (!CitusHasBeenLoaded())
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -589,11 +606,65 @@ ProcessUtilityInternal(PlannedStmt *pstmt,
|
||||||
if (isAlterExtensionUpdateCitusStmt)
|
if (isAlterExtensionUpdateCitusStmt)
|
||||||
{
|
{
|
||||||
citusCanBeUpdatedToAvailableVersion = !InstalledAndAvailableVersionsSame();
|
citusCanBeUpdatedToAvailableVersion = !InstalledAndAvailableVersionsSame();
|
||||||
|
|
||||||
|
/*upgrade citus */
|
||||||
|
DefElem *newVersionValue = GetExtensionOption(
|
||||||
|
((AlterExtensionStmt *) parsetree)->options, "new_version");
|
||||||
|
Oid citusExtensionOid = get_extension_oid("citus", true);
|
||||||
|
char *curExtensionVersion = get_extension_version(citusExtensionOid);
|
||||||
|
Oid citusColumnarOid = get_extension_oid("citus_columnar", true);
|
||||||
|
if (newVersionValue)
|
||||||
|
{
|
||||||
|
const char *newVersion = defGetString(newVersionValue);
|
||||||
|
|
||||||
|
/*alter extension citus update to 11.2-1, and no citus_columnar installed */
|
||||||
|
if (strcmp(newVersion, "11.2-1") == 0 && citusColumnarOid == InvalidOid)
|
||||||
|
{
|
||||||
|
/*it's upgrade citus to 11.2-1 */
|
||||||
|
CreateExtensionWithVersion("citus_columnar", "11.1-0");
|
||||||
|
}
|
||||||
|
else if (strcmp(curExtensionVersion, "11.2-1") == 0 && citusColumnarOid !=
|
||||||
|
InvalidOid)
|
||||||
|
{
|
||||||
|
/*downgrade citus_columnar to Y */
|
||||||
|
AlterExtensionUpdateStmt("citus_columnar", "11.1-0");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
standard_ProcessUtility_compat(pstmt, queryString, false, context,
|
standard_ProcessUtility_compat(pstmt, queryString, false, context,
|
||||||
params, queryEnv, dest, completionTag);
|
params, queryEnv, dest, completionTag);
|
||||||
|
|
||||||
|
if (isAlterExtensionUpdateCitusStmt)
|
||||||
|
{
|
||||||
|
DefElem *newVersionValue = GetExtensionOption(
|
||||||
|
((AlterExtensionStmt *) parsetree)->options, "new_version");
|
||||||
|
Oid citusColumnarOid = get_extension_oid("citus_columnar", true);
|
||||||
|
if (newVersionValue)
|
||||||
|
{
|
||||||
|
const char *newVersion = defGetString(newVersionValue);
|
||||||
|
if (strcmp(newVersion, "11.2-1") == 0 && citusColumnarOid != InvalidOid)
|
||||||
|
{
|
||||||
|
/*after "ALTER EXTENSION citus" updates citus_columnar Y to version Z. */
|
||||||
|
char *curColumnarVersion = get_extension_version(citusColumnarOid);
|
||||||
|
if (strcmp(curColumnarVersion, "11.1-0") == 0)
|
||||||
|
{
|
||||||
|
AlterExtensionUpdateStmt("citus_columnar", "11.2-1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(newVersion, "11.1-1") == 0 && citusColumnarOid !=
|
||||||
|
InvalidOid)
|
||||||
|
{
|
||||||
|
/*after "ALTER EXTENSION citus" drops citus_columnar extension */
|
||||||
|
char *curColumnarVersion = get_extension_version(citusColumnarOid);
|
||||||
|
if (strcmp(curColumnarVersion, "11.1-0") == 0)
|
||||||
|
{
|
||||||
|
RemoveExtensionById(citusColumnarOid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* if we are running ALTER EXTENSION citus UPDATE (to "<version>") command, we may need
|
* if we are running ALTER EXTENSION citus UPDATE (to "<version>") command, we may need
|
||||||
* to mark existing objects as distributed depending on the "version" parameter if
|
* to mark existing objects as distributed depending on the "version" parameter if
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
-- citus--10.0-1--10.0-2
|
-- citus--10.0-1--10.0-2
|
||||||
|
|
||||||
#include "../../columnar/sql/columnar--10.0-1--10.0-2.sql"
|
--#include "../../columnar/sql/columnar--10.0-1--10.0-2.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--10.0-1--10.0-2.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
||||||
|
|
||||||
GRANT SELECT ON public.citus_tables TO public;
|
GRANT SELECT ON public.citus_tables TO public;
|
||||||
|
|
|
@ -9,7 +9,14 @@ INSERT INTO citus.pg_dist_object SELECT
|
||||||
0 as objsubid
|
0 as objsubid
|
||||||
ON CONFLICT DO NOTHING;
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
#include "../../columnar/sql/columnar--10.0-3--10.1-1.sql"
|
--#include "../../columnar/sql/columnar--10.0-3--10.1-1.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--10.0-3--10.1-1.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
||||||
#include "udfs/create_distributed_table/10.1-1.sql";
|
#include "udfs/create_distributed_table/10.1-1.sql";
|
||||||
#include "udfs/worker_partitioned_relation_total_size/10.1-1.sql"
|
#include "udfs/worker_partitioned_relation_total_size/10.1-1.sql"
|
||||||
#include "udfs/worker_partitioned_relation_size/10.1-1.sql"
|
#include "udfs/worker_partitioned_relation_size/10.1-1.sql"
|
||||||
|
|
|
@ -9,7 +9,15 @@ GRANT ALL ON FUNCTION pg_catalog.worker_record_sequence_dependency(regclass,regc
|
||||||
ALTER TABLE pg_catalog.pg_dist_placement ADD CONSTRAINT placement_shardid_groupid_unique_index UNIQUE (shardid, groupid);
|
ALTER TABLE pg_catalog.pg_dist_placement ADD CONSTRAINT placement_shardid_groupid_unique_index UNIQUE (shardid, groupid);
|
||||||
|
|
||||||
#include "udfs/stop_metadata_sync_to_node/10.2-1.sql"
|
#include "udfs/stop_metadata_sync_to_node/10.2-1.sql"
|
||||||
#include "../../columnar/sql/columnar--10.1-1--10.2-1.sql"
|
--#include "../../columnar/sql/columnar--10.1-1--10.2-1.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--10.1-1--10.2-1.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
||||||
|
|
||||||
#include "udfs/citus_internal_add_partition_metadata/10.2-1.sql";
|
#include "udfs/citus_internal_add_partition_metadata/10.2-1.sql";
|
||||||
#include "udfs/citus_internal_add_shard_metadata/10.2-1.sql";
|
#include "udfs/citus_internal_add_shard_metadata/10.2-1.sql";
|
||||||
#include "udfs/citus_internal_add_placement_metadata/10.2-1.sql";
|
#include "udfs/citus_internal_add_placement_metadata/10.2-1.sql";
|
||||||
|
|
|
@ -2,4 +2,11 @@
|
||||||
|
|
||||||
-- bump version to 10.2-2
|
-- bump version to 10.2-2
|
||||||
|
|
||||||
#include "../../columnar/sql/columnar--10.2-1--10.2-2.sql"
|
--#include "../../columnar/sql/columnar--10.2-1--10.2-2.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--10.2-1--10.2-2.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
|
@ -2,4 +2,11 @@
|
||||||
|
|
||||||
-- bump version to 10.2-3
|
-- bump version to 10.2-3
|
||||||
|
|
||||||
#include "../../columnar/sql/columnar--10.2-2--10.2-3.sql"
|
--#include "../../columnar/sql/columnar--10.2-2--10.2-3.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--10.2-2--10.2-3.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
|
@ -2,7 +2,14 @@
|
||||||
|
|
||||||
-- bump version to 10.2-4
|
-- bump version to 10.2-4
|
||||||
|
|
||||||
#include "../../columnar/sql/columnar--10.2-3--10.2-4.sql"
|
--#include "../../columnar/sql/columnar--10.2-3--10.2-4.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--10.2-3--10.2-4.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
||||||
|
|
||||||
#include "udfs/fix_partition_shard_index_names/10.2-4.sql"
|
#include "udfs/fix_partition_shard_index_names/10.2-4.sql"
|
||||||
#include "udfs/fix_all_partition_shard_index_names/10.2-4.sql"
|
#include "udfs/fix_all_partition_shard_index_names/10.2-4.sql"
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
-- bump version to 11.1-2
|
|
||||||
|
|
||||||
--\echo Use "ALTER EXTENSION citus UPDATE TO '11.1-2'" to load this file. \quit
|
|
||||||
--do $$ begin raise log 'citus--11.1-1--11.1-2.sql'; end; $$;
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
-- bump version to 11.2-1
|
||||||
|
-- drop columnar objects if they exists in citus extension
|
||||||
|
|
||||||
|
DO $check_citus$
|
||||||
|
BEGIN
|
||||||
|
IF EXISTS (SELECT 1 FROM pg_catalog.pg_extension AS e
|
||||||
|
INNER JOIN pg_catalog.pg_depend AS d ON (d.refobjid = e.oid)
|
||||||
|
INNER JOIN pg_catalog.pg_proc AS p ON (p.oid = d.objid)
|
||||||
|
WHERE e.extname='citus' and p.proname = 'columnar_handler'
|
||||||
|
) THEN
|
||||||
|
ALTER EXTENSION citus DROP SCHEMA columnar;
|
||||||
|
ALTER EXTENSION citus DROP SEQUENCE columnar.storageid_seq;
|
||||||
|
|
||||||
|
-- columnar tables
|
||||||
|
ALTER EXTENSION citus DROP TABLE columnar.options;
|
||||||
|
ALTER EXTENSION citus DROP TABLE columnar.stripe;
|
||||||
|
ALTER EXTENSION citus DROP TABLE columnar.chunk_group;
|
||||||
|
ALTER EXTENSION citus DROP TABLE columnar.chunk;
|
||||||
|
|
||||||
|
DO $proc$
|
||||||
|
BEGIN
|
||||||
|
-- columnar functions
|
||||||
|
IF substring(current_Setting('server_version'), '\d+')::int >= 12 THEN
|
||||||
|
EXECUTE $$
|
||||||
|
ALTER EXTENSION citus DROP FUNCTION columnar.columnar_handler;
|
||||||
|
ALTER EXTENSION citus DROP ACCESS METHOD columnar;
|
||||||
|
ALTER EXTENSION citus DROP FUNCTION pg_catalog.alter_columnar_table_set;
|
||||||
|
ALTER EXTENSION citus DROP FUNCTION pg_catalog.alter_columnar_table_reset;
|
||||||
|
$$;
|
||||||
|
END IF;
|
||||||
|
END$proc$;
|
||||||
|
|
||||||
|
-- functions under citus_internal for columnar
|
||||||
|
ALTER EXTENSION citus DROP FUNCTION citus_internal.upgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus DROP FUNCTION citus_internal.downgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus DROP FUNCTION citus_internal.columnar_ensure_am_depends_catalog;
|
||||||
|
END IF;
|
||||||
|
END $check_citus$;
|
|
@ -35,7 +35,14 @@ DROP FUNCTION IF EXISTS pg_catalog.citus_total_relation_size(regclass);
|
||||||
#include "udfs/worker_change_sequence_dependency/10.0-1.sql"
|
#include "udfs/worker_change_sequence_dependency/10.0-1.sql"
|
||||||
#include "udfs/remove_local_tables_from_metadata/10.0-1.sql"
|
#include "udfs/remove_local_tables_from_metadata/10.0-1.sql"
|
||||||
|
|
||||||
#include "../../columnar/sql/columnar--9.5-1--10.0-1.sql"
|
--#include "../../columnar/sql/columnar--9.5-1--10.0-1.sql"
|
||||||
|
DO $check_columnar$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (select 1 from pg_extension where extname='citus_columnar') THEN
|
||||||
|
#include "../../columnar/sql/columnar--9.5-1--10.0-1.sql"
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$check_columnar$;
|
||||||
|
|
||||||
#include "udfs/time_partition_range/10.0-1.sql"
|
#include "udfs/time_partition_range/10.0-1.sql"
|
||||||
#include "udfs/time_partitions/10.0-1.sql"
|
#include "udfs/time_partitions/10.0-1.sql"
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
-- add relations to citus
|
||||||
|
ALTER EXTENSION citus ADD SCHEMA columnar;
|
||||||
|
ALTER EXTENSION citus ADD SEQUENCE columnar.storageid_seq;
|
||||||
|
ALTER EXTENSION citus ADD TABLE columnar.options;
|
||||||
|
ALTER EXTENSION citus ADD TABLE columnar.stripe;
|
||||||
|
ALTER EXTENSION citus ADD TABLE columnar.chunk_group;
|
||||||
|
ALTER EXTENSION citus ADD TABLE columnar.chunk;
|
||||||
|
|
||||||
|
DO $proc$
|
||||||
|
BEGIN
|
||||||
|
-- columnar functions
|
||||||
|
IF substring(current_Setting('server_version'), '\d+')::int >= 12 THEN
|
||||||
|
EXECUTE $$
|
||||||
|
ALTER EXTENSION citus ADD FUNCTION columnar.columnar_handler;
|
||||||
|
ALTER EXTENSION citus ADD ACCESS METHOD columnar;
|
||||||
|
ALTER EXTENSION citus ADD FUNCTION pg_catalog.alter_columnar_table_set;
|
||||||
|
ALTER EXTENSION citus ADD FUNCTION pg_catalog.alter_columnar_table_reset;
|
||||||
|
$$;
|
||||||
|
END IF;
|
||||||
|
END$proc$;
|
||||||
|
|
||||||
|
ALTER EXTENSION citus ADD FUNCTION citus_internal.upgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus ADD FUNCTION citus_internal.downgrade_columnar_storage;
|
||||||
|
ALTER EXTENSION citus ADD FUNCTION citus_internal.columnar_ensure_am_depends_catalog;
|
|
@ -227,7 +227,8 @@ extern ObjectAddress AlterExtensionSchemaStmtObjectAddress(Node *stmt,
|
||||||
bool missing_ok);
|
bool missing_ok);
|
||||||
extern ObjectAddress AlterExtensionUpdateStmtObjectAddress(Node *stmt,
|
extern ObjectAddress AlterExtensionUpdateStmtObjectAddress(Node *stmt,
|
||||||
bool missing_ok);
|
bool missing_ok);
|
||||||
|
extern void CreateExtensionWithVersion(const char *extname, const char *extVersion);
|
||||||
|
extern void AlterExtensionUpdateStmt(const char *extname, const char *extVersion);
|
||||||
|
|
||||||
/* foreign_constraint.c - forward declarations */
|
/* foreign_constraint.c - forward declarations */
|
||||||
extern bool ConstraintIsAForeignKeyToReferenceTable(char *constraintName,
|
extern bool ConstraintIsAForeignKeyToReferenceTable(char *constraintName,
|
||||||
|
|
Loading…
Reference in New Issue