]> source.dussan.org Git - sonarqube.git/commitdiff
Revert "SONAR-7704 Change type of components.created_at to bigint"
authorEric Giffon <eric.giffon@sonarsource.com>
Tue, 22 Aug 2023 14:06:36 +0000 (16:06 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 23 Aug 2023 20:03:05 +0000 (20:03 +0000)
This reverts commit 020582bd

29 files changed:
server/sonar-ce-task-projectanalysis/src/it/java/org/sonar/ce/task/projectanalysis/step/ReportPersistComponentsStepIT.java
server/sonar-ce-task-projectanalysis/src/it/java/org/sonar/ce/task/projectanalysis/step/ViewsPersistComponentsStepIT.java
server/sonar-ce-task-projectanalysis/src/it/java/org/sonar/ce/task/projectexport/branches/ExportBranchesStepIT.java
server/sonar-ce-task-projectanalysis/src/it/java/org/sonar/ce/task/projectexport/component/ExportComponentsStepIT.java
server/sonar-ce-task-projectanalysis/src/it/java/org/sonar/ce/task/projectexport/rule/ExportAdHocRulesStepIT.java
server/sonar-ce-task-projectanalysis/src/it/java/org/sonar/ce/task/projectexport/steps/ExportNewCodePeriodsStepIT.java
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStep.java
server/sonar-db-dao/src/it/java/org/sonar/db/component/ComponentDaoIT.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDto.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentQuery.java
server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
server/sonar-db-dao/src/schema/schema-sq.ddl
server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentQueryTest.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/component/ComponentTesting.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponents.java [deleted file]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/DbVersion102.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponents.java [deleted file]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponents.java [deleted file]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponents.java [deleted file]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponentsTest.java [deleted file]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponentsTest.java [deleted file]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponentsTest.java [deleted file]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponentsTest.java [deleted file]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponentsTest/schema.sql [deleted file]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponentsTest/schema.sql [deleted file]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponentsTest/schema.sql [deleted file]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponentsTest/schema.sql [deleted file]
server/sonar-webserver-webapi/src/it/java/org/sonar/server/component/ws/TreeActionIT.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ComponentUpdater.java

index d5b47e09c45757a90fe3914841ce3d43c9d00bb1..7dd7d3449c901f1dbddf4eb754ed95b2aab004f2 100644 (file)
@@ -75,14 +75,14 @@ public class ReportPersistComponentsStepIT extends BaseStepTest {
 
   private final System2 system2 = mock(System2.class);
   private final DbClient dbClient = db.getDbClient();
-  private Long now;
+  private Date now;
   private final MutableDisabledComponentsHolder disabledComponentsHolder = mock(MutableDisabledComponentsHolder.class, RETURNS_DEEP_STUBS);
   private PersistComponentsStep underTest;
 
   @Before
   public void setup() throws Exception {
-    now = DATE_FORMAT.parse("2015-06-02").getTime();
-    when(system2.now()).thenReturn(now);
+    now = DATE_FORMAT.parse("2015-06-02");
+    when(system2.now()).thenReturn(now.getTime());
 
     BranchPersister branchPersister = mock(BranchPersister.class);
     ProjectPersister projectPersister = mock(ProjectPersister.class);
@@ -365,7 +365,7 @@ public class ReportPersistComponentsStepIT extends BaseStepTest {
   @Test
   public void do_not_update_created_at_on_existing_component() {
     Date oldDate = DateUtils.parseDate("2015-01-01");
-    ComponentDto project = prepareProject(p -> p.setCreatedAt(oldDate.getTime()));
+    ComponentDto project = prepareProject(p -> p.setCreatedAt(oldDate));
     db.getSession().commit();
 
     treeRootHolder.setRoot(
index cadcb2bcd30105f798c605e7599c9ce372b18411..1972a83bb760b8eef4fc88fe6d4d50adaa89fbbf 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.ce.task.projectanalysis.step;
 
 import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.Random;
 import java.util.stream.Stream;
 import javax.annotation.Nullable;
@@ -87,14 +88,14 @@ public class ViewsPersistComponentsStepIT extends BaseStepTest {
 
   private final System2 system2 = mock(System2.class);
   private final DbClient dbClient = dbTester.getDbClient();
-  private Long now;
+  private Date now;
   private final MutableDisabledComponentsHolder disabledComponentsHolder = mock(MutableDisabledComponentsHolder.class, RETURNS_DEEP_STUBS);
   private PersistComponentsStep underTest;
 
   @Before
   public void setup() throws Exception {
-    now = DATE_FORMAT.parse("2015-06-02").getTime();
-    when(system2.now()).thenReturn(now);
+    now = DATE_FORMAT.parse("2015-06-02");
+    when(system2.now()).thenReturn(now.getTime());
 
     analysisMetadataHolder.setBranch(new DefaultBranchImpl(DEFAULT_MAIN_BRANCH_NAME));
     BranchPersister branchPersister = mock(BranchPersister.class);
index bf3cee58ff182938d4ddbe9e834c405eb20f4b01..9c82b10856b1e48ca81adb19010b66571a0700e5 100644 (file)
@@ -98,7 +98,7 @@ public class ExportBranchesStepIT {
     ProjectData projectData = dbTester.components().insertPublicProject(PROJECT_UUID);
     for (BranchDto branch : branches) {
       createdAt = DateUtils.addMinutes(createdAt, 10);
-      dbTester.components().insertProjectBranch(projectData.getProjectDto(), branch).setCreatedAt(createdAt.getTime());
+      dbTester.components().insertProjectBranch(projectData.getProjectDto(), branch).setCreatedAt(createdAt);
     }
     dbTester.commit();
     when(projectHolder.projectDto()).thenReturn(projectData.getProjectDto());
index 23f48449e764578912d80de91d05c03f9910fa0c..67a2285b2f5e21e420263bc63ef113b5c997aae0 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.ce.task.projectexport.component;
 
 import com.google.common.collect.ImmutableSet;
 import com.sonarsource.governance.projectdump.protobuf.ProjectDump;
+import java.util.Date;
 import java.util.List;
 import org.junit.After;
 import org.junit.Before;
@@ -59,7 +60,7 @@ public class ExportComponentsStepIT {
     .setEnabled(true)
     .setUuid(PROJECT_UUID)
     .setUuidPath(UUID_PATH_OF_ROOT)
-    .setCreatedAt(1596749115856L)
+    .setCreatedAt(new Date(1596749115856L))
     .setBranchUuid(PROJECT_UUID);
 
   private static final String FILE_UUID = "FILE_UUID";
@@ -73,7 +74,7 @@ public class ExportComponentsStepIT {
     .setUuid(FILE_UUID)
     .setUuidPath(FILE_UUID_PATH)
     .setEnabled(true)
-    .setCreatedAt(1596749148406L)
+    .setCreatedAt(new Date(1596749148406L))
     .setBranchUuid(PROJECT_UUID);
 
   @Rule
index 8c9192f86f2519e68f71f937d159b1fd6c121ee4..feca4587a1aeb84e433c6432994885821ff8f79c 100644 (file)
@@ -185,7 +185,7 @@ public class ExportAdHocRulesStepIT {
     Date createdAt = new Date();
     ProjectData projectData = dbTester.components().insertPublicProject(PROJECT_UUID);
     mainBranch = projectData.getMainBranchComponent();
-    BRANCHES.forEach(branch -> dbTester.components().insertProjectBranch(projectData.getProjectDto(), branch).setCreatedAt(createdAt.getTime()));
+    BRANCHES.forEach(branch -> dbTester.components().insertProjectBranch(projectData.getProjectDto(), branch).setCreatedAt(createdAt));
     dbTester.commit();
     return projectData.getProjectDto();
   }
index 7ab9664817942f3ed08dc0510c45c4577c4c4278..02e7f87db133aacd3dc671001900522545542ab7 100644 (file)
@@ -86,10 +86,10 @@ public class ExportNewCodePeriodsStepIT {
     logTester.setLevel(Level.DEBUG);
     Date createdAt = new Date();
     project = dbTester.components().insertPrivateProject(PROJECT_UUID).getProjectDto();
-    PROJECT_BRANCHES.forEach(branch -> dbTester.components().insertProjectBranch(project, branch).setCreatedAt(createdAt.getTime()));
+    PROJECT_BRANCHES.forEach(branch -> dbTester.components().insertProjectBranch(project, branch).setCreatedAt(createdAt));
 
     ComponentDto anotherProjectDto = dbTester.components().insertPublicProject(ANOTHER_PROJECT).getMainBranchComponent();
-    ANOTHER_PROJECT_BRANCHES.forEach(branch -> dbTester.components().insertProjectBranch(anotherProjectDto, branch).setCreatedAt(createdAt.getTime()));
+    ANOTHER_PROJECT_BRANCHES.forEach(branch -> dbTester.components().insertProjectBranch(anotherProjectDto, branch).setCreatedAt(createdAt));
 
     dbTester.commit();
     projectHolder.setProjectDto(project);
index f9f1d6e30e7a711ed06b062e91077363348d8010..21b4d1dfbf582c8c78ac9fdbc6654d6539be7dd7 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.ce.task.projectanalysis.step;
 
 import java.util.Collection;
+import java.util.Date;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
@@ -330,7 +331,7 @@ public class PersistComponentsStep implements ComputationStep {
       componentDto.setUuid(componentUuid);
       componentDto.setKey(componentKey);
       componentDto.setEnabled(true);
-      componentDto.setCreatedAt(system2.now());
+      componentDto.setCreatedAt(new Date(system2.now()));
 
       return componentDto;
     }
index 2131e1b0cef805e33c2e814fdc508aef1e780c6b..2299f88c60f0d3d64c5db233a87812df9bd62e7e 100644 (file)
@@ -24,6 +24,7 @@ import com.tngtech.java.junit.dataprovider.DataProviderRunner;
 import com.tngtech.java.junit.dataprovider.UseDataProvider;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -986,9 +987,9 @@ public class ComponentDaoIT {
 
   @Test
   public void selectByQuery_verify_order() {
-    Long firstDate = system2.now();
-    Long secondDate = system2.now();
-    Long thirdDate = system2.now();
+    Date firstDate = new Date(system2.now());
+    Date secondDate = new Date(system2.now());
+    Date thirdDate = new Date(system2.now());
 
     ComponentDto project3 = db.components().insertPrivateProject(componentDto -> componentDto.setName("project3").setCreatedAt(thirdDate)).getMainBranchComponent();
     ComponentDto project1 = db.components().insertPrivateProject(componentDto -> componentDto.setName("project1").setCreatedAt(firstDate)).getMainBranchComponent();
@@ -1363,15 +1364,15 @@ public class ComponentDaoIT {
 
   @Test
   public void selectByQuery_filter_created_at() {
-    ComponentDto project1 = db.components().insertPrivateProject(p -> p.setCreatedAt(parseDate("2018-02-01").getTime())).getMainBranchComponent();
-    ComponentDto project2 = db.components().insertPrivateProject(p -> p.setCreatedAt(parseDate("2018-06-01").getTime())).getMainBranchComponent();
+    ComponentDto project1 = db.components().insertPrivateProject(p -> p.setCreatedAt(parseDate("2018-02-01"))).getMainBranchComponent();
+    ComponentDto project2 = db.components().insertPrivateProject(p -> p.setCreatedAt(parseDate("2018-06-01"))).getMainBranchComponent();
 
-    assertThat(selectProjectUuidsByQuery(q -> q.setCreatedAfter(parseDate("2017-12-01").getTime())))
+    assertThat(selectProjectUuidsByQuery(q -> q.setCreatedAfter(parseDate("2017-12-01"))))
       .containsExactlyInAnyOrder(project1.uuid(), project2.uuid());
-    assertThat(selectProjectUuidsByQuery(q -> q.setCreatedAfter(parseDate("2018-02-20").getTime())))
+    assertThat(selectProjectUuidsByQuery(q -> q.setCreatedAfter(parseDate("2018-02-20"))))
       .containsExactlyInAnyOrder(project2.uuid());
 
-    assertThat(selectProjectUuidsByQuery(q -> q.setCreatedAfter(parseDate("2019-01-01").getTime())))
+    assertThat(selectProjectUuidsByQuery(q -> q.setCreatedAfter(parseDate("2019-01-01"))))
       .isEmpty();
   }
 
index 9cc41cad9e3299610c65c08893e6cfb66cee512e..2cf4f9dec67c3e0558172ae7d6ff4fc7e1446b3e 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.db.component;
 
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import javax.annotation.CheckForNull;
@@ -97,7 +98,7 @@ public class ComponentDto {
   private boolean enabled = true;
   private boolean isPrivate = false;
 
-  private Long createdAt;
+  private Date createdAt;
 
   public static String formatUuidPathFromParent(ComponentDto parent) {
     checkArgument(!Strings.isNullOrEmpty(parent.getUuidPath()));
@@ -244,12 +245,12 @@ public class ComponentDto {
     return this;
   }
 
-  public Long getCreatedAt() {
+  public Date getCreatedAt() {
     return createdAt;
   }
 
-  public ComponentDto setCreatedAt(Long createdAt) {
-    this.createdAt = createdAt;
+  public ComponentDto setCreatedAt(Date datetime) {
+    this.createdAt = datetime;
     return this;
   }
 
index c71729ace88c52c5d829ae3574694702e4a52446..7baf5d3c409add09cfcb03fefc450e12bd9ff6d5 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.db.component;
 
+import java.util.Date;
 import java.util.Locale;
 import java.util.Set;
 import java.util.stream.Stream;
@@ -40,7 +41,7 @@ public class ComponentQuery {
   private final Long anyBranchAnalyzedBefore;
   private final Long anyBranchAnalyzedAfter;
   private final Long allBranchesAnalyzedBefore;
-  private final Long createdAfter;
+  private final Date createdAfter;
   private final boolean onProvisionedOnly;
 
   private ComponentQuery(Builder builder) {
@@ -118,7 +119,7 @@ public class ComponentQuery {
   }
 
   @CheckForNull
-  public Long getCreatedAfter() {
+  public Date getCreatedAfter() {
     return createdAfter;
   }
 
@@ -146,7 +147,7 @@ public class ComponentQuery {
     private Long anyBranchAnalyzedBefore;
     private Long anyBranchAnalyzedAfter;
     private Long allBranchesAnalyzedBefore;
-    private Long createdAfter;
+    private Date createdAfter;
     private boolean onProvisionedOnly = false;
 
     public Builder setNameOrKeyQuery(@Nullable String nameOrKeyQuery) {
@@ -207,7 +208,7 @@ public class ComponentQuery {
       return this;
     }
 
-    public Builder setCreatedAfter(@Nullable Long l) {
+    public Builder setCreatedAfter(@Nullable Date l) {
       this.createdAfter = l;
       return this;
     }
index 795916561fe0b0d56a02b594bf125e610a256e70..e55f64f3fde694dfa355913c94abd80d6062bea2 100644 (file)
         )
       </if>
     <if test="query.createdAfter != null">
-      and p.created_at &gt;= #{query.createdAfter,jdbcType=BIGINT}
+      and p.created_at &gt;= #{query.createdAfter,jdbcType=TIMESTAMP}
     </if>
   </sql>
 
     #{path,jdbcType=VARCHAR},
     #{copyComponentUuid,jdbcType=VARCHAR},
     #{enabled,jdbcType=BOOLEAN},
-    #{createdAt,jdbcType=BIGINT},
+    #{createdAt,jdbcType=TIMESTAMP},
     ${_false},
     null,
     null,
index bb2b29411021f2122ea6e43b35ef8aa9f1c27357..b11227919b1699f33e64fe13c536e1a3b5c0ae30 100644 (file)
@@ -241,7 +241,7 @@ CREATE TABLE "COMPONENTS"(
     "B_COPY_COMPONENT_UUID" CHARACTER VARYING(50),
     "B_PATH" CHARACTER VARYING(2000),
     "B_UUID_PATH" CHARACTER VARYING(1500),
-    "CREATED_AT" BIGINT
+    "CREATED_AT" TIMESTAMP
 );
 CREATE INDEX "PROJECTS_QUALIFIER" ON "COMPONENTS"("QUALIFIER" NULLS FIRST);
 CREATE UNIQUE INDEX "COMPONENTS_UUID" ON "COMPONENTS"("UUID" NULLS FIRST);
index a2a6d7ea364ea4eb82b15105537a7a5643dac1ec..ced666d7df6fa1738df2bf568aba434e2f4bd221 100644 (file)
@@ -38,7 +38,7 @@ public class ComponentQueryTest {
       .setNameOrKeyQuery("key")
       .setAnyBranchAnalyzedBefore(100L)
       .setAnyBranchAnalyzedAfter(200L)
-      .setCreatedAfter(new Date(300L).getTime())
+      .setCreatedAfter(new Date(300L))
       .setQualifiers(PROJECT)
       .build();
 
@@ -46,7 +46,7 @@ public class ComponentQueryTest {
     assertThat(underTest.getQualifiers()).containsOnly(PROJECT);
     assertThat(underTest.getAnyBranchAnalyzedBefore()).isEqualTo(100L);
     assertThat(underTest.getAnyBranchAnalyzedAfter()).isEqualTo(200L);
-    assertThat(underTest.getCreatedAfter()).isEqualTo(300L);
+    assertThat(underTest.getCreatedAfter().getTime()).isEqualTo(300L);
     assertThat(underTest.isOnProvisionedOnly()).isFalse();
     assertThat(underTest.isPartialMatchOnKey()).isFalse();
     assertThat(underTest.hasEmptySetOfComponents()).isFalse();
index 275d75ba5754283727cbe0a0c1f5c7e411432e24..cf638ea7a4d4328557b319e0db802ecc81d8666a 100644 (file)
@@ -68,7 +68,7 @@ public class ComponentTesting {
       .setBranchUuid(branch.branchUuid())
       .setQualifier(Qualifiers.FILE)
       .setPath(path)
-      .setCreatedAt(new Date().getTime())
+      .setCreatedAt(new Date())
       .setLanguage("xoo");
   }
 
@@ -214,7 +214,7 @@ public class ComponentTesting {
       .setUuidPath(formatUuidPathFromParent(parent))
       .setKey(uuid)
       .setBranchUuid(branch.branchUuid())
-      .setCreatedAt(new Date().getTime())
+      .setCreatedAt(new Date())
       .setEnabled(true)
       .setPrivate(branch.isPrivate());
   }
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponents.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponents.java
deleted file mode 100644 (file)
index 3629985..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import org.sonar.db.Database;
-import org.sonar.db.DatabaseUtils;
-import org.sonar.server.platform.db.migration.def.BigIntegerColumnDef;
-import org.sonar.server.platform.db.migration.def.ColumnDef;
-import org.sonar.server.platform.db.migration.sql.AddColumnsBuilder;
-import org.sonar.server.platform.db.migration.step.DdlChange;
-
-public class AddCreatedAtTempInComponents extends DdlChange {
-
-  private static final String TABLE_NAME = "components";
-  private static final String COLUMN_NAME = "created_at_temp";
-
-  public AddCreatedAtTempInComponents(Database db) {
-    super(db);
-  }
-
-  @Override
-  public void execute(Context context) throws SQLException {
-    try (Connection connection = getDatabase().getDataSource().getConnection()) {
-      if (!DatabaseUtils.tableColumnExists(connection, TABLE_NAME, COLUMN_NAME)) {
-        ColumnDef columnDef = BigIntegerColumnDef.newBigIntegerColumnDefBuilder()
-          .setColumnName(COLUMN_NAME)
-          .setIsNullable(true)
-          .build();
-        context.execute(new AddColumnsBuilder(getDialect(), TABLE_NAME).addColumn(columnDef).build());
-      }
-    }
-  }
-}
index 7446ce9558cec126c5f971503274fa79fb01f5d5..7433dfa52b5f672bb5265397068ae335186589ca 100644 (file)
@@ -25,6 +25,7 @@ import org.sonar.server.platform.db.migration.version.DbVersion;
 // ignoring bad number formatting, as it's indented that we align the migration numbers to SQ versions
 @SuppressWarnings("java:S3937")
 public class DbVersion102 implements DbVersion {
+
   /**
    * We use the start of the 10.X cycle as an opportunity to align migration numbers with the SQ version number.
    * Please follow this pattern:
@@ -77,10 +78,7 @@ public class DbVersion102 implements DbVersion {
 
       .add(10_2_025, "Rename 'build_date' in 'snapshots' table to 'analysis_date", RenameBuildDateInSnapshots.class)
 
-      .add(10_2_026, "Add column 'created_at_temp' in 'components' table", AddCreatedAtTempInComponents.class)
-      .add(10_2_027, "Populate column 'created_at_temp' in 'components' table", PopulateCreatedAtTempInComponents.class)
-      .add(10_2_028, "Drop column 'created_at' in 'components' table", DropCreatedAtInComponents.class)
-      .add(10_2_029, "Rename column 'created_at_temp' to 'created_at' in 'components' table", RenameCreatedAtTempInComponents.class)
+      // Versions 10_2_026 to 10_2_029 were used by a migration that has been rolled back. See SONAR-7704
 
       .add(10_2_030, "Create table 'anticipated_transitions'", CreateAnticipatedTransitionsTable.class)
 
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponents.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponents.java
deleted file mode 100644 (file)
index 9ed2168..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import org.sonar.db.Database;
-import org.sonar.server.platform.db.migration.step.DropColumnChange;
-
-class DropCreatedAtInComponents extends DropColumnChange {
-
-  static final String TABLE_NAME = "components";
-  static final String COLUMN_NAME = "created_at";
-
-  public DropCreatedAtInComponents(Database db) {
-    super(db, TABLE_NAME, COLUMN_NAME);
-  }
-}
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponents.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponents.java
deleted file mode 100644 (file)
index 6cf3fb8..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Types;
-import org.sonar.db.ColumnMetadata;
-import org.sonar.db.Database;
-import org.sonar.db.DatabaseUtils;
-import org.sonar.db.dialect.Oracle;
-import org.sonar.server.platform.db.migration.step.DataChange;
-import org.sonar.server.platform.db.migration.step.MassUpdate;
-
-public class PopulateCreatedAtTempInComponents extends DataChange {
-
-  private static final String SELECT_QUERY = """
-    SELECT uuid, created_at
-    FROM components
-    WHERE created_at_temp is null
-    """;
-
-  private static final String UPDATE_QUERY = """
-    UPDATE components
-    SET created_at_temp=?
-    WHERE uuid=?
-    """;
-
-  public PopulateCreatedAtTempInComponents(Database db) {
-    super(db);
-  }
-
-  @Override
-  protected void execute(Context context) throws SQLException {
-    boolean columnAlreadyHasNewType = columnAlreadyHasNewType();
-
-    MassUpdate massUpdate = context.prepareMassUpdate();
-    massUpdate.select(SELECT_QUERY);
-    massUpdate.update(UPDATE_QUERY);
-
-    massUpdate.execute((row, update, index) -> {
-      String componentUuid = row.getString(1);
-      Long createdAt;
-      if (columnAlreadyHasNewType) {
-        createdAt = row.getNullableLong(2);
-      } else {
-        createdAt = row.getNullableDate(2) == null ? null : row.getNullableDate(2).getTime();
-      }
-      update.setLong(1, createdAt)
-        .setString(2, componentUuid);
-      return true;
-    });
-  }
-
-  private boolean columnAlreadyHasNewType() throws SQLException {
-    try (Connection connection = getDatabase().getDataSource().getConnection()) {
-      ColumnMetadata columnMetadata = DatabaseUtils.getColumnMetadata(connection, "components", "created_at");
-      int newType = getDialect().getId().equals(Oracle.ID) ? Types.NUMERIC : Types.BIGINT;
-      return columnMetadata != null && columnMetadata.sqlType() == newType;
-    }
-  }
-}
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponents.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponents.java
deleted file mode 100644 (file)
index 33f8b1e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import org.sonar.db.Database;
-import org.sonar.server.platform.db.migration.step.RenameVarcharColumnChange;
-
-public class RenameCreatedAtTempInComponents extends RenameVarcharColumnChange {
-
-  private static final String TABLE_NAME = "components";
-  private static final String OLD_COLUMN_NAME = "created_at_temp";
-  private static final String NEW_COLUMN_NAME = "created_at";
-
-  public RenameCreatedAtTempInComponents(Database db) {
-    super(db, TABLE_NAME, OLD_COLUMN_NAME, NEW_COLUMN_NAME);
-  }
-}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponentsTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponentsTest.java
deleted file mode 100644 (file)
index ad17bcc..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.db.CoreDbTester;
-
-public class AddCreatedAtTempInComponentsTest {
-
-  private static final String TABLE_NAME = "components";
-  private static final String COLUMN_NAME = "created_at_temp";
-
-  @Rule
-  public final CoreDbTester db = CoreDbTester.createForSchema(AddCreatedAtTempInComponentsTest.class, "schema.sql");
-
-  private final AddCreatedAtTempInComponents underTest = new AddCreatedAtTempInComponents(db.database());
-
-  @Test
-  public void execute_whenColumnDoesNotExist_shouldCreateColumn() throws SQLException {
-    db.assertColumnDoesNotExist(TABLE_NAME, COLUMN_NAME);
-    underTest.execute();
-    db.assertColumnDefinition(TABLE_NAME, COLUMN_NAME, Types.BIGINT, null, null);
-  }
-
-  @Test
-  public void execute_whenExecutedTwice_shouldNotFail() throws SQLException {
-    db.assertColumnDoesNotExist(TABLE_NAME, COLUMN_NAME);
-    underTest.execute();
-    underTest.execute();
-    db.assertColumnDefinition(TABLE_NAME, COLUMN_NAME, Types.BIGINT, null, null);
-  }
-}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponentsTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponentsTest.java
deleted file mode 100644 (file)
index 46e8d8e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.db.CoreDbTester;
-
-public class DropCreatedAtInComponentsTest {
-
-  private static final String TABLE_NAME = "components";
-  private static final String COLUMN_NAME = "created_at";
-
-  @Rule
-  public final CoreDbTester db = CoreDbTester.createForSchema(DropCreatedAtInComponentsTest.class, "schema.sql");
-
-  private final DropCreatedAtInComponents underTest = new DropCreatedAtInComponents(db.database());
-
-  @Test
-  public void execute_whenColumnExists_shouldDropColumn() throws SQLException {
-    db.assertColumnDefinition(TABLE_NAME, COLUMN_NAME, Types.TIMESTAMP, null, null);
-    underTest.execute();
-    db.assertColumnDoesNotExist(TABLE_NAME, COLUMN_NAME);
-  }
-
-  @Test
-  public void execute_whenExecutedTwice_shouldNotFail() throws SQLException {
-    db.assertColumnDefinition(TABLE_NAME, COLUMN_NAME, Types.TIMESTAMP, null, null);
-    underTest.execute();
-    underTest.execute();
-    db.assertColumnDoesNotExist(TABLE_NAME, COLUMN_NAME);
-  }
-}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponentsTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponentsTest.java
deleted file mode 100644 (file)
index 41633a7..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import java.sql.SQLException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TimeZone;
-import javax.annotation.Nullable;
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.db.CoreDbTester;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.tuple;
-
-public class PopulateCreatedAtTempInComponentsTest {
-
-  private static final String TABLE_NAME = "components";
-
-  @Rule
-  public final CoreDbTester db = CoreDbTester.createForSchema(PopulateCreatedAtTempInComponentsTest.class, "schema.sql");
-
-  private final PopulateCreatedAtTempInComponents underTest = new PopulateCreatedAtTempInComponents(db.database());
-
-  @Test
-  public void execute_whenComponentsDoNotExist_shouldNotFail() {
-    assertThatCode(underTest::execute).doesNotThrowAnyException();
-  }
-
-  @Test
-  public void execute_whenComponentsExist_shouldPopulateColumn() throws SQLException, ParseException {
-    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
-    format.setTimeZone(TimeZone.getTimeZone("UTC"));
-    Date date1 = format.parse("2023-01-01 10:22:38.222");
-    Date date2 = format.parse("2023-07-20 02:00:01.800");
-
-    insertComponent("uuid-1", null);
-    insertComponent("uuid-2", date1);
-    insertComponent("uuid-3", date2);
-
-    underTest.execute();
-
-    assertThat(db.select("select UUID, CREATED_AT_TEMP from components"))
-      .extracting(stringObjectMap -> stringObjectMap.get("UUID"), stringObjectMap -> stringObjectMap.get("CREATED_AT_TEMP"))
-      .containsExactlyInAnyOrder(
-        tuple("uuid-1", null),
-        tuple("uuid-2", 1672568558222L),
-        tuple("uuid-3", 1689818401800L));
-  }
-
-  private void insertComponent(String uuid, @Nullable Date createdAt) {
-    db.executeInsert(TABLE_NAME,
-      "UUID", uuid,
-      "UUID_PATH", "P",
-      "BRANCH_UUID", "B",
-      "ENABLED", true,
-      "PRIVATE", true,
-      "CREATED_AT", createdAt,
-      "CREATED_AT_TEMP", null);
-  }
-}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponentsTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponentsTest.java
deleted file mode 100644 (file)
index 7fefd0d..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.version.v102;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.db.CoreDbTester;
-
-public class RenameCreatedAtTempInComponentsTest {
-
-  public static final String TABLE_NAME = "components";
-  public static final String OLD_COLUMN_NAME = "created_at_temp";
-  public static final String NEW_COLUMN_NAME = "created_at";
-
-  @Rule
-  public final CoreDbTester db = CoreDbTester.createForSchema(RenameCreatedAtTempInComponentsTest.class, "schema.sql");
-
-  private final RenameCreatedAtTempInComponents underTest = new RenameCreatedAtTempInComponents(db.database());
-
-  @Test
-  public void execute_shouldRenameColumn() throws SQLException {
-    db.assertColumnDefinition(TABLE_NAME, OLD_COLUMN_NAME, Types.BIGINT, null, null);
-    db.assertColumnDoesNotExist(TABLE_NAME, NEW_COLUMN_NAME);
-    underTest.execute();
-    db.assertColumnDefinition(TABLE_NAME, NEW_COLUMN_NAME, Types.BIGINT, null, null);
-    db.assertColumnDoesNotExist(TABLE_NAME, OLD_COLUMN_NAME);
-  }
-
-  @Test
-  public void execute_whenExecutedTwice_shouldNotFail() throws SQLException {
-    db.assertColumnDefinition(TABLE_NAME, OLD_COLUMN_NAME, Types.BIGINT, null, null);
-    db.assertColumnDoesNotExist(TABLE_NAME, NEW_COLUMN_NAME);
-    underTest.execute();
-    underTest.execute();
-    db.assertColumnDefinition(TABLE_NAME, NEW_COLUMN_NAME, Types.BIGINT, null, null);
-    db.assertColumnDoesNotExist(TABLE_NAME, OLD_COLUMN_NAME);
-  }
-}
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponentsTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/AddCreatedAtTempInComponentsTest/schema.sql
deleted file mode 100644 (file)
index 6b3d3b8..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-CREATE TABLE "COMPONENTS"(
-    "UUID" CHARACTER VARYING(50) NOT NULL,
-    "KEE" CHARACTER VARYING(1000),
-    "DEPRECATED_KEE" CHARACTER VARYING(400),
-    "NAME" CHARACTER VARYING(2000),
-    "LONG_NAME" CHARACTER VARYING(2000),
-    "DESCRIPTION" CHARACTER VARYING(2000),
-    "ENABLED" BOOLEAN DEFAULT TRUE NOT NULL,
-    "SCOPE" CHARACTER VARYING(3),
-    "QUALIFIER" CHARACTER VARYING(10),
-    "PRIVATE" BOOLEAN NOT NULL,
-    "LANGUAGE" CHARACTER VARYING(20),
-    "COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "PATH" CHARACTER VARYING(2000),
-    "UUID_PATH" CHARACTER VARYING(1500) NOT NULL,
-    "BRANCH_UUID" CHARACTER VARYING(50) NOT NULL,
-    "MAIN_BRANCH_PROJECT_UUID" CHARACTER VARYING(50),
-    "B_CHANGED" BOOLEAN,
-    "B_NAME" CHARACTER VARYING(500),
-    "B_LONG_NAME" CHARACTER VARYING(500),
-    "B_DESCRIPTION" CHARACTER VARYING(2000),
-    "B_ENABLED" BOOLEAN,
-    "B_QUALIFIER" CHARACTER VARYING(10),
-    "B_LANGUAGE" CHARACTER VARYING(20),
-    "B_COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "B_PATH" CHARACTER VARYING(2000),
-    "B_UUID_PATH" CHARACTER VARYING(1500),
-    "CREATED_AT" TIMESTAMP
-);
-CREATE INDEX "PROJECTS_QUALIFIER" ON "COMPONENTS"("QUALIFIER" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_UUID" ON "COMPONENTS"("UUID" NULLS FIRST);
-CREATE INDEX "COMPONENTS_BRANCH_UUID" ON "COMPONENTS"("BRANCH_UUID" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_KEE_BRANCH_UUID" ON "COMPONENTS"("KEE" NULLS FIRST, "BRANCH_UUID" NULLS FIRST);
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponentsTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/DropCreatedAtInComponentsTest/schema.sql
deleted file mode 100644 (file)
index 8224670..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-CREATE TABLE "COMPONENTS"(
-    "UUID" CHARACTER VARYING(50) NOT NULL,
-    "KEE" CHARACTER VARYING(1000),
-    "DEPRECATED_KEE" CHARACTER VARYING(400),
-    "NAME" CHARACTER VARYING(2000),
-    "LONG_NAME" CHARACTER VARYING(2000),
-    "DESCRIPTION" CHARACTER VARYING(2000),
-    "ENABLED" BOOLEAN DEFAULT TRUE NOT NULL,
-    "SCOPE" CHARACTER VARYING(3),
-    "QUALIFIER" CHARACTER VARYING(10),
-    "PRIVATE" BOOLEAN NOT NULL,
-    "LANGUAGE" CHARACTER VARYING(20),
-    "COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "PATH" CHARACTER VARYING(2000),
-    "UUID_PATH" CHARACTER VARYING(1500) NOT NULL,
-    "BRANCH_UUID" CHARACTER VARYING(50) NOT NULL,
-    "MAIN_BRANCH_PROJECT_UUID" CHARACTER VARYING(50),
-    "B_CHANGED" BOOLEAN,
-    "B_NAME" CHARACTER VARYING(500),
-    "B_LONG_NAME" CHARACTER VARYING(500),
-    "B_DESCRIPTION" CHARACTER VARYING(2000),
-    "B_ENABLED" BOOLEAN,
-    "B_QUALIFIER" CHARACTER VARYING(10),
-    "B_LANGUAGE" CHARACTER VARYING(20),
-    "B_COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "B_PATH" CHARACTER VARYING(2000),
-    "B_UUID_PATH" CHARACTER VARYING(1500),
-    "CREATED_AT" TIMESTAMP,
-    "CREATED_AT_TEMP" BIGINT
-);
-CREATE INDEX "PROJECTS_QUALIFIER" ON "COMPONENTS"("QUALIFIER" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_UUID" ON "COMPONENTS"("UUID" NULLS FIRST);
-CREATE INDEX "COMPONENTS_BRANCH_UUID" ON "COMPONENTS"("BRANCH_UUID" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_KEE_BRANCH_UUID" ON "COMPONENTS"("KEE" NULLS FIRST, "BRANCH_UUID" NULLS FIRST);
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponentsTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/PopulateCreatedAtTempInComponentsTest/schema.sql
deleted file mode 100644 (file)
index 8224670..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-CREATE TABLE "COMPONENTS"(
-    "UUID" CHARACTER VARYING(50) NOT NULL,
-    "KEE" CHARACTER VARYING(1000),
-    "DEPRECATED_KEE" CHARACTER VARYING(400),
-    "NAME" CHARACTER VARYING(2000),
-    "LONG_NAME" CHARACTER VARYING(2000),
-    "DESCRIPTION" CHARACTER VARYING(2000),
-    "ENABLED" BOOLEAN DEFAULT TRUE NOT NULL,
-    "SCOPE" CHARACTER VARYING(3),
-    "QUALIFIER" CHARACTER VARYING(10),
-    "PRIVATE" BOOLEAN NOT NULL,
-    "LANGUAGE" CHARACTER VARYING(20),
-    "COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "PATH" CHARACTER VARYING(2000),
-    "UUID_PATH" CHARACTER VARYING(1500) NOT NULL,
-    "BRANCH_UUID" CHARACTER VARYING(50) NOT NULL,
-    "MAIN_BRANCH_PROJECT_UUID" CHARACTER VARYING(50),
-    "B_CHANGED" BOOLEAN,
-    "B_NAME" CHARACTER VARYING(500),
-    "B_LONG_NAME" CHARACTER VARYING(500),
-    "B_DESCRIPTION" CHARACTER VARYING(2000),
-    "B_ENABLED" BOOLEAN,
-    "B_QUALIFIER" CHARACTER VARYING(10),
-    "B_LANGUAGE" CHARACTER VARYING(20),
-    "B_COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "B_PATH" CHARACTER VARYING(2000),
-    "B_UUID_PATH" CHARACTER VARYING(1500),
-    "CREATED_AT" TIMESTAMP,
-    "CREATED_AT_TEMP" BIGINT
-);
-CREATE INDEX "PROJECTS_QUALIFIER" ON "COMPONENTS"("QUALIFIER" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_UUID" ON "COMPONENTS"("UUID" NULLS FIRST);
-CREATE INDEX "COMPONENTS_BRANCH_UUID" ON "COMPONENTS"("BRANCH_UUID" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_KEE_BRANCH_UUID" ON "COMPONENTS"("KEE" NULLS FIRST, "BRANCH_UUID" NULLS FIRST);
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponentsTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v102/RenameCreatedAtTempInComponentsTest/schema.sql
deleted file mode 100644 (file)
index ea8abd3..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-CREATE TABLE "COMPONENTS"(
-    "UUID" CHARACTER VARYING(50) NOT NULL,
-    "KEE" CHARACTER VARYING(1000),
-    "DEPRECATED_KEE" CHARACTER VARYING(400),
-    "NAME" CHARACTER VARYING(2000),
-    "LONG_NAME" CHARACTER VARYING(2000),
-    "DESCRIPTION" CHARACTER VARYING(2000),
-    "ENABLED" BOOLEAN DEFAULT TRUE NOT NULL,
-    "SCOPE" CHARACTER VARYING(3),
-    "QUALIFIER" CHARACTER VARYING(10),
-    "PRIVATE" BOOLEAN NOT NULL,
-    "LANGUAGE" CHARACTER VARYING(20),
-    "COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "PATH" CHARACTER VARYING(2000),
-    "UUID_PATH" CHARACTER VARYING(1500) NOT NULL,
-    "BRANCH_UUID" CHARACTER VARYING(50) NOT NULL,
-    "MAIN_BRANCH_PROJECT_UUID" CHARACTER VARYING(50),
-    "B_CHANGED" BOOLEAN,
-    "B_NAME" CHARACTER VARYING(500),
-    "B_LONG_NAME" CHARACTER VARYING(500),
-    "B_DESCRIPTION" CHARACTER VARYING(2000),
-    "B_ENABLED" BOOLEAN,
-    "B_QUALIFIER" CHARACTER VARYING(10),
-    "B_LANGUAGE" CHARACTER VARYING(20),
-    "B_COPY_COMPONENT_UUID" CHARACTER VARYING(50),
-    "B_PATH" CHARACTER VARYING(2000),
-    "B_UUID_PATH" CHARACTER VARYING(1500),
-    "CREATED_AT_TEMP" BIGINT
-);
-CREATE INDEX "PROJECTS_QUALIFIER" ON "COMPONENTS"("QUALIFIER" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_UUID" ON "COMPONENTS"("UUID" NULLS FIRST);
-CREATE INDEX "COMPONENTS_BRANCH_UUID" ON "COMPONENTS"("BRANCH_UUID" NULLS FIRST);
-CREATE UNIQUE INDEX "COMPONENTS_KEE_BRANCH_UUID" ON "COMPONENTS"("KEE" NULLS FIRST, "BRANCH_UUID" NULLS FIRST);
index 965ba688bfc14f790cd534373938fa09dadfc9de..8c1ff9c38c9bc939598a0ae236b8a14bcabfb127 100644 (file)
@@ -579,7 +579,7 @@ public class TreeActionIT {
         .setQualifier(getJsonField(componentAsJsonObject, "qualifier"))
         .setDescription(getJsonField(componentAsJsonObject, "description"))
         .setEnabled(true)
-        .setCreatedAt(now.getTime()));
+        .setCreatedAt(now));
     }
     db.commit();
     return projectData;
index 4f870974b1294bf330a51cf0e826a5472b448a62..99bbd34801a927110d55e618321ffb1c79f36b48 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.server.component;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Optional;
@@ -211,7 +212,7 @@ public class ComponentUpdater {
       .setScope(Scopes.PROJECT)
       .setQualifier(newComponent.qualifier())
       .setPrivate(newComponent.isPrivate())
-      .setCreatedAt(now);
+      .setCreatedAt(new Date(now));
 
     dbClient.componentDao().insert(session, component, true);
     return component;