forked from huawei/openGauss-server
Compare commits
6 Commits
Author | SHA1 | Date |
---|---|---|
opengauss-bot | ada51c9fea | |
gentle_hu | 1f6832d30b | |
opengauss-bot | d8cd223c53 | |
shirley_zhengx | fcad3b1ccd | |
opengauss-bot | 1f18fce639 | |
shirley_zhengx | 1ded1fec93 |
|
@ -271,6 +271,7 @@ typedef struct AlteredTableInfo {
|
||||||
List* changedConstraintDefs; /* string definitions of same */
|
List* changedConstraintDefs; /* string definitions of same */
|
||||||
List* changedIndexOids; /* OIDs of indexes to rebuild */
|
List* changedIndexOids; /* OIDs of indexes to rebuild */
|
||||||
List* changedIndexDefs; /* string definitions of same */
|
List* changedIndexDefs; /* string definitions of same */
|
||||||
|
bool isDeltaTable; /* delta table or not */
|
||||||
} AlteredTableInfo;
|
} AlteredTableInfo;
|
||||||
|
|
||||||
/* Struct describing one new constraint to check in Phase 3 scan */
|
/* Struct describing one new constraint to check in Phase 3 scan */
|
||||||
|
@ -451,7 +452,8 @@ static void createForeignKeyTriggers(
|
||||||
Relation rel, Oid refRelOid, Constraint* fkconstraint, Oid constraintOid, Oid indexOid);
|
Relation rel, Oid refRelOid, Constraint* fkconstraint, Oid constraintOid, Oid indexOid);
|
||||||
static void ATController(Relation rel, List* cmds, bool recurse, LOCKMODE lockmode);
|
static void ATController(Relation rel, List* cmds, bool recurse, LOCKMODE lockmode);
|
||||||
static bool ATCheckLedgerTableCmd(Relation rel, AlterTableCmd* cmd);
|
static bool ATCheckLedgerTableCmd(Relation rel, AlterTableCmd* cmd);
|
||||||
static void ATPrepCmd(List** wqueue, Relation rel, AlterTableCmd* cmd, bool recurse, bool recursing, LOCKMODE lockmode);
|
static void ATPrepCmd(List** wqueue, Relation rel, AlterTableCmd* cmd, bool recurse, bool recursing, LOCKMODE lockmode,
|
||||||
|
bool isDeltaTable = false);
|
||||||
static void ATRewriteCatalogs(List** wqueue, LOCKMODE lockmode);
|
static void ATRewriteCatalogs(List** wqueue, LOCKMODE lockmode);
|
||||||
static void ATExecCmd(List** wqueue, AlteredTableInfo* tab, Relation rel, AlterTableCmd* cmd, LOCKMODE lockmode);
|
static void ATExecCmd(List** wqueue, AlteredTableInfo* tab, Relation rel, AlterTableCmd* cmd, LOCKMODE lockmode);
|
||||||
static void ATRewriteTables(List** wqueue, LOCKMODE lockmode);
|
static void ATRewriteTables(List** wqueue, LOCKMODE lockmode);
|
||||||
|
@ -493,7 +495,7 @@ static void ExecChangeTableSpaceForRowPartition(AlteredTableInfo*, LOCKMODE);
|
||||||
static void ExecChangeTableSpaceForCStoreTable(AlteredTableInfo*, LOCKMODE);
|
static void ExecChangeTableSpaceForCStoreTable(AlteredTableInfo*, LOCKMODE);
|
||||||
static void ExecChangeTableSpaceForCStorePartition(AlteredTableInfo*, LOCKMODE);
|
static void ExecChangeTableSpaceForCStorePartition(AlteredTableInfo*, LOCKMODE);
|
||||||
|
|
||||||
static AlteredTableInfo* ATGetQueueEntry(List** wqueue, Relation rel);
|
static AlteredTableInfo* ATGetQueueEntry(List** wqueue, Relation rel, bool isDeltaTable = false);
|
||||||
static void ATSimplePermissions(Relation rel, int allowed_targets);
|
static void ATSimplePermissions(Relation rel, int allowed_targets);
|
||||||
static void ATWrongRelkindError(Relation rel, int allowed_targets);
|
static void ATWrongRelkindError(Relation rel, int allowed_targets);
|
||||||
static void ATSimpleRecursion(List** wqueue, Relation rel, AlterTableCmd* cmd, bool recurse, LOCKMODE lockmode);
|
static void ATSimpleRecursion(List** wqueue, Relation rel, AlterTableCmd* cmd, bool recurse, LOCKMODE lockmode);
|
||||||
|
@ -7070,13 +7072,14 @@ static void ATController(Relation rel, List* cmds, bool recurse, LOCKMODE lockmo
|
||||||
* Caller must have acquired appropriate lock type on relation already.
|
* Caller must have acquired appropriate lock type on relation already.
|
||||||
* This lock should be held until commit.
|
* This lock should be held until commit.
|
||||||
*/
|
*/
|
||||||
static void ATPrepCmd(List** wqueue, Relation rel, AlterTableCmd* cmd, bool recurse, bool recursing, LOCKMODE lockmode)
|
static void ATPrepCmd(List** wqueue, Relation rel, AlterTableCmd* cmd, bool recurse, bool recursing, LOCKMODE lockmode,
|
||||||
|
bool isDeltaTable)
|
||||||
{
|
{
|
||||||
AlteredTableInfo* tab = NULL;
|
AlteredTableInfo* tab = NULL;
|
||||||
int pass;
|
int pass;
|
||||||
|
|
||||||
/* Find or create work queue entry for this table */
|
/* Find or create work queue entry for this table */
|
||||||
tab = ATGetQueueEntry(wqueue, rel);
|
tab = ATGetQueueEntry(wqueue, rel, isDeltaTable);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy the original subcommand for each table. This avoids conflicts
|
* Copy the original subcommand for each table. This avoids conflicts
|
||||||
|
@ -7511,7 +7514,7 @@ static void ATRewriteCatalogs(List** wqueue, LOCKMODE lockmode)
|
||||||
* ATExecAlterColumnType since it should be done only once if
|
* ATExecAlterColumnType since it should be done only once if
|
||||||
* multiple columns of a table are altered).
|
* multiple columns of a table are altered).
|
||||||
*/
|
*/
|
||||||
if (pass == AT_PASS_ALTER_TYPE)
|
if (pass == AT_PASS_ALTER_TYPE && !tab->isDeltaTable)
|
||||||
ATPostAlterTypeCleanup(wqueue, tab, lockmode);
|
ATPostAlterTypeCleanup(wqueue, tab, lockmode);
|
||||||
|
|
||||||
relation_close(rel, NoLock);
|
relation_close(rel, NoLock);
|
||||||
|
@ -8547,7 +8550,7 @@ static void ATOnlyCheckCStoreTable(const AlteredTableInfo* tab, Relation rel)
|
||||||
/*
|
/*
|
||||||
* ATGetQueueEntry: find or create an entry in the ALTER TABLE work queue
|
* ATGetQueueEntry: find or create an entry in the ALTER TABLE work queue
|
||||||
*/
|
*/
|
||||||
static AlteredTableInfo* ATGetQueueEntry(List** wqueue, Relation rel)
|
static AlteredTableInfo* ATGetQueueEntry(List** wqueue, Relation rel, bool isDeltaTable)
|
||||||
{
|
{
|
||||||
Oid relid = RelationGetRelid(rel);
|
Oid relid = RelationGetRelid(rel);
|
||||||
AlteredTableInfo* tab = NULL;
|
AlteredTableInfo* tab = NULL;
|
||||||
|
@ -8567,7 +8570,7 @@ static AlteredTableInfo* ATGetQueueEntry(List** wqueue, Relation rel)
|
||||||
tab->relid = relid;
|
tab->relid = relid;
|
||||||
tab->relkind = rel->rd_rel->relkind;
|
tab->relkind = rel->rd_rel->relkind;
|
||||||
tab->oldDesc = CreateTupleDescCopy(RelationGetDescr(rel));
|
tab->oldDesc = CreateTupleDescCopy(RelationGetDescr(rel));
|
||||||
|
tab->isDeltaTable = isDeltaTable;
|
||||||
*wqueue = lappend(*wqueue, tab);
|
*wqueue = lappend(*wqueue, tab);
|
||||||
|
|
||||||
return tab;
|
return tab;
|
||||||
|
@ -8701,16 +8704,17 @@ static void ATSimpleRecursion(List** wqueue, Relation rel, AlterTableCmd* cmd, b
|
||||||
ListCell* child = NULL;
|
ListCell* child = NULL;
|
||||||
List* children = NIL;
|
List* children = NIL;
|
||||||
|
|
||||||
|
bool isDeltaStore = RelationIsCUFormat(rel);
|
||||||
#ifdef ENABLE_MULTIPLE_NODES
|
#ifdef ENABLE_MULTIPLE_NODES
|
||||||
if (g_instance.attr.attr_storage.enable_delta_store && RelationIsCUFormat(rel))
|
isDeltaStore = g_instance.attr.attr_storage.enable_delta_store && isDeltaStore;
|
||||||
#else
|
#endif
|
||||||
|
if (isDeltaStore)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Under centrailzed mode, there may be unique index on delta table. When checking unique
|
* Under centrailzed mode, there may be unique index on delta table. When checking unique
|
||||||
* constraint, unique index on delta will be used. So we ignore enable_delta_store here
|
* constraint, unique index on delta will be used. So we ignore enable_delta_store here
|
||||||
* and alter delta table at the same time.
|
* and alter delta table at the same time.
|
||||||
*/
|
*/
|
||||||
if (RelationIsCUFormat(rel))
|
|
||||||
#endif
|
|
||||||
children = find_cstore_delta(rel, lockmode);
|
children = find_cstore_delta(rel, lockmode);
|
||||||
else
|
else
|
||||||
children = find_all_inheritors(relid, lockmode, NULL);
|
children = find_all_inheritors(relid, lockmode, NULL);
|
||||||
|
@ -8729,7 +8733,7 @@ static void ATSimpleRecursion(List** wqueue, Relation rel, AlterTableCmd* cmd, b
|
||||||
/* find_all_inheritors already got lock */
|
/* find_all_inheritors already got lock */
|
||||||
childrel = relation_open(childrelid, NoLock);
|
childrel = relation_open(childrelid, NoLock);
|
||||||
CheckTableNotInUse(childrel, "ALTER TABLE");
|
CheckTableNotInUse(childrel, "ALTER TABLE");
|
||||||
ATPrepCmd(wqueue, childrel, cmd, false, true, lockmode);
|
ATPrepCmd(wqueue, childrel, cmd, false, true, lockmode, isDeltaStore);
|
||||||
relation_close(childrel, NoLock);
|
relation_close(childrel, NoLock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -254,7 +254,9 @@ BEGIN
|
||||||
end if;
|
end if;
|
||||||
END$$;
|
END$$;
|
||||||
|
|
||||||
|
DROP TYPE IF EXISTS pg_catalog._jsonb;
|
||||||
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
||||||
|
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
||||||
|
|
|
@ -254,7 +254,9 @@ BEGIN
|
||||||
end if;
|
end if;
|
||||||
END$$;
|
END$$;
|
||||||
|
|
||||||
|
DROP TYPE IF EXISTS pg_catalog._jsonb;
|
||||||
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
||||||
|
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.gs_encrypt(IN encryptstr text, IN keystr text, IN type text,OUT encrypt_result_str text) CASCADE;DROP FUNCTION IF EXISTS pg_catalog.gs_decrypt(IN decryptstr text, IN keystr text, IN type text,OUT decrypt_result_str text) CASCADE;
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
-- add new type jsonb
|
-- add new type jsonb
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
DROP TYPE IF EXISTS pg_catalog._jsonb;
|
||||||
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
||||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_TYPE, 3802, 0, b;
|
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_TYPE, 3802, 3807, b;
|
||||||
CREATE TYPE pg_catalog.jsonb;
|
CREATE TYPE pg_catalog.jsonb;
|
||||||
|
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.jsonb_in(cstring) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.jsonb_in(cstring) CASCADE;
|
||||||
|
|
|
@ -16,3 +16,5 @@ SET LOCAL inplace_upgrade_next_system_object_oids = IUO_CATALOG, false, true, 0,
|
||||||
CREATE UNIQUE INDEX gs_encrypted_proc_func_id_index ON pg_catalog.gs_encrypted_proc USING BTREE(func_id OID_OPS);
|
CREATE UNIQUE INDEX gs_encrypted_proc_func_id_index ON pg_catalog.gs_encrypted_proc USING BTREE(func_id OID_OPS);
|
||||||
|
|
||||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_CATALOG, false, true, 0, 0, 0, 0;
|
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_CATALOG, false, true, 0, 0, 0, 0;
|
||||||
|
|
||||||
|
GRANT SELECT ON pg_catalog.gs_encrypted_proc TO PUBLIC;
|
|
@ -1,8 +1,9 @@
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
-- add new type jsonb
|
-- add new type jsonb
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
DROP TYPE IF EXISTS pg_catalog._jsonb;
|
||||||
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
DROP TYPE IF EXISTS pg_catalog.jsonb;
|
||||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_TYPE, 3802, 0, b;
|
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_TYPE, 3802, 3807, b;
|
||||||
CREATE TYPE pg_catalog.jsonb;
|
CREATE TYPE pg_catalog.jsonb;
|
||||||
|
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.jsonb_in(cstring) CASCADE;
|
DROP FUNCTION IF EXISTS pg_catalog.jsonb_in(cstring) CASCADE;
|
||||||
|
|
|
@ -16,3 +16,5 @@ SET LOCAL inplace_upgrade_next_system_object_oids = IUO_CATALOG, false, true, 0,
|
||||||
CREATE UNIQUE INDEX gs_encrypted_proc_func_id_index ON pg_catalog.gs_encrypted_proc USING BTREE(func_id OID_OPS);
|
CREATE UNIQUE INDEX gs_encrypted_proc_func_id_index ON pg_catalog.gs_encrypted_proc USING BTREE(func_id OID_OPS);
|
||||||
|
|
||||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_CATALOG, false, true, 0, 0, 0, 0;
|
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_CATALOG, false, true, 0, 0, 0, 0;
|
||||||
|
|
||||||
|
GRANT SELECT ON pg_catalog.gs_encrypted_proc TO PUBLIC;
|
Loading…
Reference in New Issue