From 23f8b53dc136197b425754717517f40ec87fbced Mon Sep 17 00:00:00 2001 From: Jun Yuan Date: Mon, 19 Jul 2021 12:26:27 -0700 Subject: [PATCH] DB-12364: update zookeeper property if a core system table index is recreated --- .../db/impl/sql/catalog/BaseDataDictionary.java | 4 ++-- .../impl/sql/catalog/SpliceDataDictionary.java | 8 ++++++++ .../upgrade/SpliceCatalogUpgradeScripts.java | 2 +- ...eScriptToPrioritizeSchemaIdInSystemIndices.java | 14 ++++++++++++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/db-engine/src/main/java/com/splicemachine/db/impl/sql/catalog/BaseDataDictionary.java b/db-engine/src/main/java/com/splicemachine/db/impl/sql/catalog/BaseDataDictionary.java index 7037ef53d58..8c63829be03 100644 --- a/db-engine/src/main/java/com/splicemachine/db/impl/sql/catalog/BaseDataDictionary.java +++ b/db-engine/src/main/java/com/splicemachine/db/impl/sql/catalog/BaseDataDictionary.java @@ -43,7 +43,7 @@ @SuppressFBWarnings(value="MS_PKGPROTECT") public abstract class BaseDataDictionary implements DataDictionary, ModuleControl, ModuleSupportable,java.security.PrivilegedAction { protected static final String CFG_SYSTABLES_ID = "SystablesIdentifier"; - protected static final String CFG_SYSTABLES_INDEX1_ID = "SystablesIndex1Identifier"; + public static final String CFG_SYSTABLES_INDEX1_ID = "SystablesIndex1Identifier"; protected static final String CFG_SYSTABLES_INDEX2_ID = "SystablesIndex2Identifier"; protected static final String CFG_SYSCOLUMNS_ID = "SyscolumnsIdentifier"; protected static final String CFG_SYSCOLUMNS_INDEX1_ID = "SyscolumnsIndex1Identifier"; @@ -61,7 +61,7 @@ public abstract class BaseDataDictionary implements DataDictionary, ModuleContro protected static final String CFG_SYSDATABASES_INDEX2_ID = "SysdatabasesIndex2Identifier"; public static final String CFG_ALLOW_MULTIDATABASE = "AllowMultidatabase"; protected static final int SYSCONGLOMERATES_CORE_NUM = 0; - protected static final int SYSTABLES_CORE_NUM = 1; + public static final int SYSTABLES_CORE_NUM = 1; protected static final int SYSCOLUMNS_CORE_NUM = 2; protected static final int SYSSCHEMAS_CORE_NUM = 3; protected static final int SYSDATABASES_CORE_NUM = 4; diff --git a/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/SpliceDataDictionary.java b/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/SpliceDataDictionary.java index cf6f695f127..1e6d4b456a8 100644 --- a/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/SpliceDataDictionary.java +++ b/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/SpliceDataDictionary.java @@ -1873,4 +1873,12 @@ private void insertIndex(TransactionController tc, cd.getDescriptorName(), tabInfo.getTableName()); } } + + public void updateBootstrapProperty(Properties startParams, int catalogNum, String indexName, int indexId) { + if (catalogNum > NUM_CORE) + return; + + startParams.put(indexName,Long.toString( + coreInfo[catalogNum].getIndexConglomerate(indexId))); + } } diff --git a/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/SpliceCatalogUpgradeScripts.java b/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/SpliceCatalogUpgradeScripts.java index 4ce90200cec..d50ec1bd397 100644 --- a/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/SpliceCatalogUpgradeScripts.java +++ b/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/SpliceCatalogUpgradeScripts.java @@ -81,7 +81,7 @@ public SpliceCatalogUpgradeScripts(SpliceDataDictionary sdd, TransactionControll scripts = new ArrayList<>(); addUpgradeScript(baseVersion4, 2020, new UpgradeAddConglomerateNumberIndex(sdd, tc)); - addUpgradeScript(baseVersion4, 2024, new UpgradeScriptToPrioritizeSchemaIdInSystemIndices(sdd, tc)); + addUpgradeScript(baseVersion4, 2024, new UpgradeScriptToPrioritizeSchemaIdInSystemIndices(sdd, tc, startParams)); // DB-11296: UpgradeConglomerateTable has to be executed first, because it adds a system table // CONGLOMERATE_SI_TABLE_NAME that is from then on needed to create tables, e.g. // in UpgradeScriptToAddSysNaturalNumbersTable. If UpgradeConglomerateTable is at the end, diff --git a/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/UpgradeScriptToPrioritizeSchemaIdInSystemIndices.java b/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/UpgradeScriptToPrioritizeSchemaIdInSystemIndices.java index 9dbb4b3788c..e1b726965ca 100644 --- a/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/UpgradeScriptToPrioritizeSchemaIdInSystemIndices.java +++ b/splice_machine/src/main/java/com/splicemachine/derby/impl/sql/catalog/upgrade/UpgradeScriptToPrioritizeSchemaIdInSystemIndices.java @@ -18,13 +18,20 @@ import com.splicemachine.db.iapi.store.access.TransactionController; import com.splicemachine.db.impl.sql.catalog.*; import com.splicemachine.derby.impl.sql.catalog.SpliceDataDictionary; -import com.splicemachine.utils.SpliceLogUtils; import java.util.Properties; +import static com.splicemachine.db.impl.sql.catalog.BaseDataDictionary.CFG_SYSTABLES_INDEX1_ID; + public class UpgradeScriptToPrioritizeSchemaIdInSystemIndices extends UpgradeScriptBase { - public UpgradeScriptToPrioritizeSchemaIdInSystemIndices(SpliceDataDictionary sdd, TransactionController tc) { + + private Properties startParams; + + public UpgradeScriptToPrioritizeSchemaIdInSystemIndices(SpliceDataDictionary sdd, + TransactionController tc, + Properties startParams) { super(sdd, tc); + this.startParams = startParams; } @Override @@ -35,6 +42,9 @@ protected void upgradeSystemTables() throws StandardException { new int[]{SYSTABLESRowFactory.SYSTABLES_INDEX1_ID} ); + sdd.updateBootstrapProperty(startParams, BaseDataDictionary.SYSTABLES_CORE_NUM, + CFG_SYSTABLES_INDEX1_ID, SYSTABLESRowFactory.SYSTABLES_INDEX1_ID); + sdd.upgradeRecreateIndexesOfSystemTable( tc, DataDictionary.SYSTRIGGERS_CATALOG_NUM,