From 7ec7c0ec4db6b200d31c7be6123d6d57887e4209 Mon Sep 17 00:00:00 2001 From: Jacek Date: Mon, 14 Jun 2021 13:16:36 +0200 Subject: [PATCH] SONAR-14792 Drop not existing tables from init schema --- .../version/v00/CreateInitialSchema.java | 121 +---------------- .../version/v00/PopulateInitialSchema.java | 127 +++++++----------- .../version/v00/CreateInitialSchemaTest.java | 6 - sonar-application/build.gradle | 4 +- 4 files changed, 52 insertions(+), 206 deletions(-) diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchema.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchema.java index f401a572150..e64ac94c90a 100644 --- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchema.java +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchema.java @@ -72,6 +72,8 @@ public class CreateInitialSchema extends DdlChange { // usual technical columns private static final IntegerColumnDef ID_COL = newIntegerColumnDefBuilder().setColumnName("id").setIsNullable(false).build(); + private static final VarcharColumnDef UUID_COL = newVarcharColumnDefBuilder().setColumnName("uuid").setIsNullable(false).setLimit(UUID_SIZE).build(); + private static final BigIntegerColumnDef TECHNICAL_CREATED_AT_COL = newBigIntegerColumnDefBuilder().setColumnName(CREATED_AT_COL_NAME).setIsNullable(false).build(); private static final BigIntegerColumnDef NULLABLE_TECHNICAL_CREATED_AT_COL = newBigIntegerColumnDefBuilder().setColumnName(CREATED_AT_COL_NAME).setIsNullable(true).build(); private static final BigIntegerColumnDef TECHNICAL_UPDATED_AT_COL = newBigIntegerColumnDefBuilder().setColumnName(UPDATED_AT_COL_NAME).setIsNullable(false).build(); @@ -87,7 +89,6 @@ public class CreateInitialSchema extends DdlChange { public void execute(Context context) throws SQLException { createActiveRuleParameters(context); createActiveRules(context); - createAlmAppInstalls(context); createAnalysisProperties(context); createCeActivity(context); createCeQueue(context); @@ -114,16 +115,11 @@ public class CreateInitialSchema extends DdlChange { createMetrics(context); createNotifications(context); createOrgQProfiles(context); - createOrgQualityGates(context); - createOrganizationAlmBindings(context); - createOrganizationMembers(context); - createOrganizations(context); createPermTemplatesGroups(context); createPermTemplatesUsers(context); createPermTemplatesCharacteristics(context); createPermissionTemplates(context); createPlugins(context); - createProjectAlmBindings(context); createProjectBranches(context); createProjectLinks(context); createProjectMappings(context); @@ -180,27 +176,6 @@ public class CreateInitialSchema extends DdlChange { addIndex(context, "active_rules", "uniq_profile_rule_ids", true, profileIdCol, ruleIdCol); } - private void createAlmAppInstalls(Context context) { - String tableName = "alm_app_installs"; - VarcharColumnDef almIdCol = newVarcharColumnBuilder("alm_id").setIsNullable(false).setLimit(UUID_SIZE).build(); - VarcharColumnDef ownerCol = newVarcharColumnBuilder("owner_id").setIsNullable(false).setLimit(MAX_SIZE).build(); - VarcharColumnDef installCol = newVarcharColumnBuilder("install_id").setIsNullable(false).setLimit(MAX_SIZE).build(); - VarcharColumnDef userExternalIdCol = newVarcharColumnBuilder("user_external_id").setLimit(255).setIsNullable(true).build(); - context.execute(newTableBuilder(tableName) - .addPkColumn(newVarcharColumnBuilder("uuid").setLimit(UUID_SIZE).setIsNullable(false).build()) - .addColumn(almIdCol) - .addColumn(ownerCol) - .addColumn(installCol) - .addColumn(newBooleanColumnDefBuilder().setColumnName("is_owner_user").setIsNullable(false).build()) - .addColumn(userExternalIdCol) - .addColumn(TECHNICAL_CREATED_AT_COL) - .addColumn(TECHNICAL_UPDATED_AT_COL) - .build()); - addIndex(context, tableName, "alm_app_installs_owner", true, almIdCol, ownerCol); - addIndex(context, tableName, "alm_app_installs_install", true, almIdCol, installCol); - addIndex(context, tableName, "alm_app_installs_external_id", false, userExternalIdCol); - } - private void createAnalysisProperties(Context context) { String tableName = "analysis_properties"; VarcharColumnDef snapshotUuidColumn = newVarcharColumnBuilder("snapshot_uuid") @@ -485,16 +460,14 @@ public class CreateInitialSchema extends DdlChange { IntegerColumnDef groupIdCol = newIntegerColumnDefBuilder().setColumnName("group_id").setIsNullable(true).build(); IntegerColumnDef resourceIdCol = newIntegerColumnDefBuilder().setColumnName("resource_id").setIsNullable(true).build(); VarcharColumnDef roleCol = newLenientVarcharBuilder("role").setLimit(64).setIsNullable(false).build(); - VarcharColumnDef organizationUuidCol = newLenientVarcharBuilder(ORGANIZATION_UUID_COL_NAME).setIsNullable(false).setLimit(UUID_SIZE).build(); context.execute( newTableBuilder(tableName) .addPkColumn(ID_COL, AUTO_INCREMENT) - .addColumn(organizationUuidCol) .addColumn(groupIdCol) .addColumn(resourceIdCol) .addColumn(roleCol) .build()); - addIndex(context, tableName, "uniq_group_roles", true, organizationUuidCol, groupIdCol, resourceIdCol, roleCol); + addIndex(context, tableName, "uniq_group_roles", true, groupIdCol, resourceIdCol, roleCol); addIndex(context, tableName, "group_roles_resource", false, resourceIdCol); } @@ -502,7 +475,6 @@ public class CreateInitialSchema extends DdlChange { context.execute( newTableBuilder("groups") .addPkColumn(ID_COL, AUTO_INCREMENT) - .addColumn(newLenientVarcharBuilder(ORGANIZATION_UUID_COL_NAME).setIsNullable(false).setLimit(UUID_SIZE).build()) .addColumn(newLenientVarcharBuilder("name").setLimit(500).setIsNullable(true).build()) .addColumn(newLenientVarcharBuilder(DESCRIPTION_COL_NAME).setLimit(200).setIsNullable(true).build()) .addColumn(DEPRECATED_TECHNICAL_CREATED_AT_COL) @@ -716,72 +688,6 @@ public class CreateInitialSchema extends DdlChange { addIndex(context, tableName, "org_qprofiles_parent_uuid", false, parentUuidCol); } - private void createOrgQualityGates(Context context) { - String tableName = "org_quality_gates"; - VarcharColumnDef organizationUuidCol = newVarcharColumnBuilder(ORGANIZATION_UUID_COL_NAME).setIsNullable(false).setLimit(UUID_SIZE).build(); - VarcharColumnDef qualityGateUuidCol = newVarcharColumnBuilder("quality_gate_uuid").setIsNullable(false).setLimit(UUID_SIZE).build(); - context.execute(newTableBuilder(tableName) - .addPkColumn(newVarcharColumnBuilder("uuid").setIsNullable(false).setLimit(UUID_SIZE).build()) - .addColumn(organizationUuidCol) - .addColumn(qualityGateUuidCol) - .build()); - addIndex(context, tableName, "uniq_org_quality_gates", true, organizationUuidCol, qualityGateUuidCol); - } - - private void createOrganizationAlmBindings(Context context) { - String tableName = "organization_alm_bindings"; - VarcharColumnDef organizationUuidCol = newVarcharColumnBuilder(ORGANIZATION_UUID_COL_NAME).setIsNullable(false).setLimit(UUID_SIZE).build(); - VarcharColumnDef almAppInstallUuidCol = newVarcharColumnBuilder("alm_app_install_uuid").setIsNullable(false).setLimit(UUID_SIZE).build(); - context.execute(newTableBuilder(tableName) - .addPkColumn(newVarcharColumnBuilder("uuid").setIsNullable(false).setLimit(UUID_SIZE).build()) - .addColumn(organizationUuidCol) - .addColumn(almAppInstallUuidCol) - .addColumn(newVarcharColumnBuilder("alm_id").setIsNullable(false).setLimit(UUID_SIZE).build()) - .addColumn(newVarcharColumnBuilder("url").setIsNullable(false).setLimit(2000).build()) - .addColumn(newVarcharColumnBuilder(USER_UUID_COL_NAME).setIsNullable(false).setLimit(USER_UUID_SIZE).build()) - .addColumn(newBooleanColumnDefBuilder().setColumnName("members_sync_enabled").setIsNullable(true).build()) - .addColumn(TECHNICAL_CREATED_AT_COL) - .build()); - addIndex(context, tableName, "org_alm_bindings_org", true, organizationUuidCol); - addIndex(context, tableName, "org_alm_bindings_install", true, almAppInstallUuidCol); - } - - private void createOrganizationMembers(Context context) { - String tableName = "organization_members"; - IntegerColumnDef userIdCol = newIntegerColumnDefBuilder().setColumnName("user_id").setIsNullable(false).build(); - context.execute( - newTableBuilder(tableName) - .addPkColumn(newVarcharColumnBuilder(ORGANIZATION_UUID_COL_NAME).setLimit(UUID_SIZE).setIsNullable(false).build()) - .addPkColumn(userIdCol) - .build()); - addIndex(context, tableName, "ix_org_members_on_user_id", false, userIdCol); - } - - private void createOrganizations(Context context) { - String tableName = "organizations"; - VarcharColumnDef keeColumn = newLenientVarcharBuilder("kee").setLimit(255).setIsNullable(false).build(); - context.execute( - newTableBuilder(tableName) - .addPkColumn(newLenientVarcharBuilder("uuid").setLimit(UUID_SIZE).setIsNullable(false).build()) - .addColumn(keeColumn) - .addColumn(newLenientVarcharBuilder("name").setLimit(255).setIsNullable(false).build()) - .addColumn(newLenientVarcharBuilder(DESCRIPTION_COL_NAME).setLimit(256).setIsNullable(true).build()) - .addColumn(newLenientVarcharBuilder("url").setLimit(256).setIsNullable(true).build()) - .addColumn(newLenientVarcharBuilder("avatar_url").setLimit(256).setIsNullable(true).build()) - .addColumn(newBooleanColumnDefBuilder().setColumnName("guarded").setIsNullable(false).build()) - .addColumn(newIntegerColumnDefBuilder().setColumnName("default_group_id").setIsNullable(true).build()) - .addColumn(newVarcharColumnBuilder("default_quality_gate_uuid").setLimit(UUID_SIZE).setIsNullable(false).build()) - .addColumn(newVarcharColumnBuilder("default_perm_template_project").setLimit(UUID_SIZE).setIsNullable(true).build()) - .addColumn(newVarcharColumnBuilder("default_perm_template_app").setLimit(UUID_SIZE).setIsNullable(true).build()) - .addColumn(newVarcharColumnBuilder("default_perm_template_port").setLimit(UUID_SIZE).setIsNullable(true).build()) - .addColumn(newBooleanColumnDefBuilder().setColumnName("new_project_private").setIsNullable(false).build()) - .addColumn(newVarcharColumnBuilder("subscription").setLimit(UUID_SIZE).setIsNullable(false).build()) - .addColumn(TECHNICAL_CREATED_AT_COL) - .addColumn(TECHNICAL_UPDATED_AT_COL) - .build()); - addIndex(context, tableName, "organization_key", true, keeColumn); - } - private void createPermTemplatesGroups(Context context) { context.execute( newTableBuilder("perm_templates_groups") @@ -853,25 +759,6 @@ public class CreateInitialSchema extends DdlChange { addIndex(context, tableName, "plugins_key", true, keyColumn); } - private void createProjectAlmBindings(Context context) { - String tableName = "project_alm_bindings"; - VarcharColumnDef almIdCol = newVarcharColumnDefBuilder().setColumnName("alm_id").setIsNullable(false).setLimit(40).build(); - VarcharColumnDef repoIdCol = newVarcharColumnDefBuilder().setColumnName("repo_id").setIsNullable(false).setLimit(256).build(); - VarcharColumnDef projectUuidCol = newVarcharColumnDefBuilder().setColumnName(PROJECT_UUID_COL_NAME).setIsNullable(false).setLimit(40).build(); - context.execute(newTableBuilder(tableName) - .addPkColumn(newVarcharColumnBuilder("uuid").setLimit(UUID_SIZE).setIsNullable(false).build()) - .addColumn(almIdCol) - .addColumn(repoIdCol) - .addColumn(projectUuidCol) - .addColumn(newVarcharColumnBuilder("github_slug").setIsNullable(true).setLimit(256).build()) - .addColumn(newVarcharColumnBuilder("url").setIsNullable(false).setLimit(2000).build()) - .addColumn(TECHNICAL_CREATED_AT_COL) - .addColumn(TECHNICAL_UPDATED_AT_COL) - .build()); - addIndex(context, tableName, tableName + "_alm_repo", true, almIdCol, repoIdCol); - addIndex(context, tableName, tableName + "_project", true, projectUuidCol); - } - private void createProjectBranches(Context context) { String tableName = "project_branches"; VarcharColumnDef projectUuidCol = newVarcharColumnBuilder(PROJECT_UUID_COL_NAME).setIsNullable(false).setLimit(OLD_UUID_VARCHAR_SIZE).build(); @@ -1029,13 +916,13 @@ public class CreateInitialSchema extends DdlChange { String tableName = "properties"; VarcharColumnDef propKey = newLenientVarcharBuilder("prop_key").setLimit(512).setIsNullable(false).build(); context.execute(newTableBuilder(tableName) - .addPkColumn(ID_COL, AUTO_INCREMENT) .addColumn(propKey) .addColumn(newBigIntegerColumnDefBuilder().setColumnName("resource_id").setIsNullable(true).build()) .addColumn(newBigIntegerColumnDefBuilder().setColumnName("user_id").setIsNullable(true).build()) .addColumn(newBooleanColumnDefBuilder().setColumnName("is_empty").setIsNullable(false).build()) .addColumn(newLenientVarcharBuilder("text_value").setLimit(MAX_SIZE).build()) .addColumn(newClobColumnDefBuilder().setColumnName("clob_value").setIsNullable(true).build()) + .addColumn(UUID_COL) .addColumn(TECHNICAL_CREATED_AT_COL) // table with be renamed to properties in following migration, use final constraint name right away .withPkConstraintName("pk_properties") diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchema.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchema.java index a0310e97202..45b03fd572d 100644 --- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchema.java +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchema.java @@ -57,18 +57,13 @@ public class PopulateInitialSchema extends DataChange { @Override public void execute(Context context) throws SQLException { - String organizationUuid = uuidFactory.create(); - int adminUserId = insertAdminUser(context); - Groups groups = insertGroups(context, organizationUuid); + Groups groups = insertGroups(context); String defaultQGUuid = insertQualityGate(context); - insertOrganization(context, organizationUuid, groups, defaultQGUuid); - insertOrgQualityGate(context, organizationUuid, defaultQGUuid); - insertInternalProperty(context, organizationUuid); - insertPropertyToEnableForceAuthentication(context); - insertGroupRoles(context, organizationUuid, groups); + insertInternalProperty(context); + insertProperties(context, defaultQGUuid); + insertGroupRoles(context, groups); insertGroupUsers(context, adminUserId, groups); - insertOrganizationMember(context, adminUserId, organizationUuid); } private int insertAdminUser(Context context) throws SQLException { @@ -97,48 +92,12 @@ public class PopulateInitialSchema extends DataChange { return requireNonNull(res); } - private void insertOrganization(Context context, String organizationUuid, Groups groups, String defaultQGUuid) throws SQLException { - truncateTable(context, "organizations"); - - long now = system2.now(); - context.prepareUpsert("insert into organizations " + - "(uuid, kee, name, guarded, new_project_private, default_group_id, default_quality_gate_uuid, subscription, created_at, updated_at)" + - " values " + - "(?, 'default-organization', 'Default Organization', ?, ?, ?, ?, 'SONARQUBE', ?, ?)") - .setString(1, organizationUuid) - .setBoolean(2, true) - .setBoolean(3, false) - .setInt(4, groups.getUserGroupId()) - .setString(5, defaultQGUuid) - .setLong(6, now) - .setLong(7, now) - .execute() - .commit(); - } - - private void insertOrgQualityGate(Context context, String organizationUuid, String defaultQGUuid) throws SQLException { - truncateTable(context, "org_quality_gates"); - - context.prepareUpsert(createInsertStatement("org_quality_gates", "uuid", "organization_uuid", "quality_gate_uuid")) - .setString(1, uuidFactory.create()) - .setString(2, organizationUuid) - .setString(3, defaultQGUuid) - .execute() - .commit(); - } - - private void insertInternalProperty(Context context, String organizationUuid) throws SQLException { + private void insertInternalProperty(Context context) throws SQLException { String tableName = "internal_properties"; truncateTable(context, tableName); long now = system2.now(); Upsert upsert = context.prepareUpsert(createInsertStatement(tableName, "kee", "is_empty", "text_value", "created_at")); - upsert - .setString(1, "organization.default") - .setBoolean(2, false) - .setString(3, organizationUuid) - .setLong(4, now) - .addBatch(); upsert .setString(1, "installation.date") .setBoolean(2, false) @@ -156,42 +115,60 @@ public class PopulateInitialSchema extends DataChange { .commit(); } - private void insertPropertyToEnableForceAuthentication(Context context) throws SQLException { - String tableName = "properties"; + private void insertProperties(Context context, String defaultQualityGate) throws SQLException { + var tableName = "properties"; truncateTable(context, tableName); long now = system2.now(); - Upsert upsert = context.prepareUpsert(createInsertStatement(tableName, "prop_key", "is_empty", "text_value", "created_at")); + var upsert = context + .prepareUpsert(createInsertStatement(tableName, "uuid", "prop_key", "is_empty", "text_value", "created_at")); + + upsert.setString(1, uuidFactory.create()) + .setString(2, "sonar.forceAuthentication") + .setBoolean(3, false) + .setString(4, "true") + .setLong(5, now) + .addBatch(); + upsert - .setString(1, "sonar.forceAuthentication") - .setBoolean(2, false) - .setString(3, "true") - .setLong(4, now); + .setString(1, uuidFactory.create()) + .setString(2, "projects.default.visibility") + .setBoolean(3, false) + .setString(4, "public") + .setLong(5, system2.now()) + .addBatch(); + + upsert + .setString(1, uuidFactory.create()) + .setString(2, "qualitygate.default") + .setBoolean(3, false) + .setString(4, defaultQualityGate) + .setLong(5, system2.now()) + .addBatch(); + upsert .execute() .commit(); } - private Groups insertGroups(Context context, String organizationUuid) throws SQLException { + private Groups insertGroups(Context context) throws SQLException { truncateTable(context, "groups"); Date now = new Date(system2.now()); Upsert upsert = context.prepareUpsert(createInsertStatement( "groups", - "organization_uuid", "name", "description", "created_at", "updated_at")); + "name", "description", "created_at", "updated_at")); upsert - .setString(1, organizationUuid) - .setString(2, ADMINS_GROUP) - .setString(3, "System administrators") + .setString(1, ADMINS_GROUP) + .setString(2, "System administrators") + .setDate(3, now) .setDate(4, now) - .setDate(5, now) .addBatch(); upsert - .setString(1, organizationUuid) - .setString(2, USERS_GROUP) - .setString(3, "Any new users created will automatically join this group") + .setString(1, USERS_GROUP) + .setString(2, "Any new users created will automatically join this group") + .setDate(3, now) .setDate(4, now) - .setDate(5, now) .addBatch(); upsert .execute() @@ -241,22 +218,20 @@ public class PopulateInitialSchema extends DataChange { } } - private static void insertGroupRoles(Context context, String organizationUuid, Groups groups) throws SQLException { + private static void insertGroupRoles(Context context, Groups groups) throws SQLException { truncateTable(context, "group_roles"); - Upsert upsert = context.prepareUpsert(createInsertStatement("group_roles", "organization_uuid", "group_id", "role")); + Upsert upsert = context.prepareUpsert(createInsertStatement("group_roles", "group_id", "role")); for (String adminRole : ADMIN_ROLES) { upsert - .setString(1, organizationUuid) - .setInt(2, groups.getAdminGroupId()) - .setString(3, adminRole) + .setInt(1, groups.getAdminGroupId()) + .setString(2, adminRole) .addBatch(); } for (String anyoneRole : Arrays.asList("scan", "provisioning")) { upsert - .setString(1, organizationUuid) - .setInt(2, null) - .setString(3, anyoneRole) + .setInt(1, null) + .setString(2, anyoneRole) .addBatch(); } upsert @@ -281,16 +256,6 @@ public class PopulateInitialSchema extends DataChange { .commit(); } - private static void insertOrganizationMember(Context context, int adminUserId, String organizationUuid) throws SQLException { - truncateTable(context, "organization_members"); - - context.prepareUpsert(createInsertStatement("organization_members", "organization_uuid", "user_id")) - .setString(1, organizationUuid) - .setInt(2, adminUserId) - .execute() - .commit(); - } - private static void truncateTable(Context context, String table) throws SQLException { context.prepareUpsert("truncate table " + table).execute().commit(); } diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchemaTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchemaTest.java index 31d730aa468..b5a2c2a1c53 100644 --- a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchemaTest.java +++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/CreateInitialSchemaTest.java @@ -52,7 +52,6 @@ public class CreateInitialSchemaTest { assertThat(tables).containsOnly( "active_rules", "active_rule_parameters", - "alm_app_installs", "analysis_properties", "ce_activity", "ce_queue", @@ -78,18 +77,13 @@ public class CreateInitialSchemaTest { "manual_measures", "metrics", "notifications", - "organizations", - "organization_alm_bindings", - "organization_members", "org_qprofiles", - "org_quality_gates", "permission_templates", "perm_templates_groups", "perm_templates_users", "perm_tpl_characteristics", "plugins", "projects", - "project_alm_bindings", "project_branches", "project_links", "project_mappings", diff --git a/sonar-application/build.gradle b/sonar-application/build.gradle index 0755a33a577..59d88509fa0 100644 --- a/sonar-application/build.gradle +++ b/sonar-application/build.gradle @@ -220,8 +220,8 @@ zip.doFirst { } // Check the size of the archive zip.doLast { - def minLength = 260000000 - def maxLength = 290000000 + def minLength = 269000000 + def maxLength = 289000000 def length = archiveFile.get().asFile.length() if (length < minLength) -- 2.39.5