Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ public static Properties getProperties(String testName) {
}

public static boolean isSqlite() {
Properties properties = new Properties();
properties.setProperty(
DatabaseConfig.CONTACT_POINTS, System.getProperty(PROP_JDBC_URL, DEFAULT_JDBC_URL));
properties.setProperty(DatabaseConfig.STORAGE, "jdbc");
return JdbcUtils.isSqlite(new JdbcConfig(new DatabaseConfig(properties)));
return System.getProperty(PROP_JDBC_URL, DEFAULT_JDBC_URL).startsWith("jdbc:sqlite:");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ public class JdbcSchemaLoaderImportIntegrationTest extends SchemaLoaderImportInt

@Override
protected Properties getProperties(String testName) {
Properties properties = new Properties();
properties.putAll(JdbcEnv.getProperties(testName));
Properties properties = JdbcEnv.getProperties(testName);
JdbcConfig config = new JdbcConfig(new DatabaseConfig(properties));
rdbEngine = RdbEngineFactory.create(config);
testUtils = new JdbcAdminImportTestUtils(properties);
Expand Down
4 changes: 0 additions & 4 deletions core/src/main/java/com/scalar/db/storage/jdbc/JdbcUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,6 @@ public static BasicDataSource initDataSourceForAdmin(
return dataSource;
}

public static boolean isSqlite(JdbcConfig config) {
return config.getJdbcUrl().startsWith("jdbc:sqlite:");
}

/**
* Get {@code JDBCType} of the specified {@code sqlType}.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import com.scalar.db.io.TimeColumn;
import com.scalar.db.io.TimestampColumn;
import com.scalar.db.io.TimestampTZColumn;
import com.scalar.db.storage.jdbc.query.MergeIntoQuery;
import com.scalar.db.storage.jdbc.query.MergeQuery;
import com.scalar.db.storage.jdbc.query.SelectQuery;
import com.scalar.db.storage.jdbc.query.SelectWithLimitQuery;
import com.scalar.db.storage.jdbc.query.UpsertQuery;
Expand Down Expand Up @@ -297,13 +297,13 @@ public String tryAddIfNotExistsToCreateIndexSql(String createIndexSql) {
}

@Override
public SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit) {
public SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit) {
return new SelectWithLimitQuery(builder, limit);
}

@Override
public UpsertQuery buildUpsertQuery(UpsertQuery.Builder builder) {
return MergeIntoQuery.createForDb2(builder);
return new MergeQuery(builder, "SYSIBM.DUAL");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ public String enclose(String name) {
}

@Override
public SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit) {
public SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit) {
return new SelectWithLimitQuery(builder, limit);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.scalar.db.common.CoreError;
import com.scalar.db.exception.storage.ExecutionException;
import com.scalar.db.io.DataType;
import com.scalar.db.storage.jdbc.query.MergeIntoQuery;
import com.scalar.db.storage.jdbc.query.MergeQuery;
import com.scalar.db.storage.jdbc.query.SelectQuery;
import com.scalar.db.storage.jdbc.query.SelectWithFetchFirstNRowsOnly;
import com.scalar.db.storage.jdbc.query.UpsertQuery;
Expand Down Expand Up @@ -169,13 +169,13 @@ public String enclose(String name) {
}

@Override
public SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit) {
public SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit) {
return new SelectWithFetchFirstNRowsOnly(builder, limit);
}

@Override
public UpsertQuery buildUpsertQuery(UpsertQuery.Builder builder) {
return MergeIntoQuery.createForOracle(builder);
return new MergeQuery(builder, "DUAL");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ public String enclose(String name) {
}

@Override
public SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit) {
public SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit) {
return new SelectWithLimitQuery(builder, limit);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,13 +161,13 @@ public String enclose(String name) {
}

@Override
public SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit) {
public SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit) {
return new SelectWithTop(builder, limit);
}

@Override
public UpsertQuery buildUpsertQuery(UpsertQuery.Builder builder) {
return new MergeQuery(builder);
return new MergeQuery(builder, null, true);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ public String encloseFullTableName(String schema, String table) {
}

@Override
public SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit) {
public SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit) {
return new SelectWithLimitQuery(builder, limit);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ default String encloseFullTableName(String schema, String table) {
return enclose(schema) + "." + enclose(table);
}

SelectQuery buildSelectQuery(SelectQuery.Builder builder, int limit);
SelectQuery buildSelectWithLimitQuery(SelectQuery.Builder builder, int limit);

UpsertQuery buildUpsertQuery(UpsertQuery.Builder builder);

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;

@ThreadSafe
Expand All @@ -24,16 +25,25 @@ public class MergeQuery implements UpsertQuery {
private final Key partitionKey;
private final Optional<Key> clusteringKey;
private final Map<String, Column<?>> columns;
@Nullable private final String dualTableName;
private final boolean semicolonAdded;

@SuppressFBWarnings("EI_EXPOSE_REP2")
public MergeQuery(Builder builder) {
public MergeQuery(Builder builder, @Nullable String dualTableName) {
this(builder, dualTableName, false);
}

@SuppressFBWarnings("EI_EXPOSE_REP2")
public MergeQuery(Builder builder, @Nullable String dualTableName, boolean semicolonAdded) {
rdbEngine = builder.rdbEngine;
schema = builder.schema;
table = builder.table;
tableMetadata = builder.tableMetadata;
partitionKey = builder.partitionKey;
clusteringKey = builder.clusteringKey;
columns = builder.columns;
this.dualTableName = dualTableName;
this.semicolonAdded = semicolonAdded;
}

@Override
Expand All @@ -47,20 +57,23 @@ public String sql() {
columns.keySet().stream().map(rdbEngine::enclose).collect(Collectors.toList());

StringBuilder sql = new StringBuilder();
sql.append("MERGE ")
sql.append("MERGE INTO ")
.append(rdbEngine.encloseFullTableName(schema, table))
.append(" t1 USING (SELECT ")
.append(makeUsingSelectSqlString(enclosedKeyNames))
.append(") t2 ON (")
.append(makePrimaryKeyConditionsSqlString(enclosedKeyNames))
.append(")");
.append(makeUsingSelectSqlString(enclosedKeyNames));
if (dualTableName != null) {
sql.append(" FROM ").append(dualTableName);
}
sql.append(") t2 ON (").append(makePrimaryKeyConditionsSqlString(enclosedKeyNames)).append(")");
if (!columns.isEmpty()) {
sql.append(" WHEN MATCHED THEN UPDATE SET ")
.append(makeUpdateSetSqlString(enclosedValueNames));
}
sql.append(" WHEN NOT MATCHED THEN INSERT ")
.append(makeInsertSqlString(enclosedKeyNames, enclosedValueNames))
.append(";");
.append(makeInsertSqlString(enclosedKeyNames, enclosedValueNames));
if (semicolonAdded) {
sql.append(";");
}
return sql.toString();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public Builder limit(int limit) {

public SelectQuery build() {
if (limit > 0) {
return rdbEngine.buildSelectQuery(this, limit);
return rdbEngine.buildSelectWithLimitQuery(this, limit);
}
return new SimpleSelectQuery(this);
}
Expand Down
Loading