mirror of
https://github.com/apache/druid.git
synced 2025-02-10 03:55:02 +00:00
Case sensitive comparison of nonbinary string in MySQL metadata storage (#8758)
This commit is contained in:
parent
ed6be81d12
commit
bca649e492
@ -45,6 +45,7 @@ public class MySQLConnector extends SQLMetadataConnector
|
|||||||
private static final String PAYLOAD_TYPE = "LONGBLOB";
|
private static final String PAYLOAD_TYPE = "LONGBLOB";
|
||||||
private static final String SERIAL_TYPE = "BIGINT(20) AUTO_INCREMENT";
|
private static final String SERIAL_TYPE = "BIGINT(20) AUTO_INCREMENT";
|
||||||
private static final String QUOTE_STRING = "`";
|
private static final String QUOTE_STRING = "`";
|
||||||
|
private static final String COLLATION = "CHARACTER SET utf8mb4 COLLATE utf8mb4_bin";
|
||||||
private static final String MYSQL_JDBC_DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
|
private static final String MYSQL_JDBC_DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
|
||||||
|
|
||||||
private final DBI dbi;
|
private final DBI dbi;
|
||||||
@ -158,6 +159,12 @@ public class MySQLConnector extends SQLMetadataConnector
|
|||||||
return SERIAL_TYPE;
|
return SERIAL_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getCollation()
|
||||||
|
{
|
||||||
|
return COLLATION;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getQuoteString()
|
public String getQuoteString()
|
||||||
{
|
{
|
||||||
|
@ -55,6 +55,7 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
{
|
{
|
||||||
private static final Logger log = new Logger(SQLMetadataConnector.class);
|
private static final Logger log = new Logger(SQLMetadataConnector.class);
|
||||||
private static final String PAYLOAD_TYPE = "BLOB";
|
private static final String PAYLOAD_TYPE = "BLOB";
|
||||||
|
private static final String COLLATION = "";
|
||||||
|
|
||||||
static final int DEFAULT_MAX_TRIES = 10;
|
static final int DEFAULT_MAX_TRIES = 10;
|
||||||
|
|
||||||
@ -93,6 +94,16 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
return PAYLOAD_TYPE;
|
return PAYLOAD_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The character set and collation for case-sensitive nonbinary string comparison
|
||||||
|
*
|
||||||
|
* @return the collation for the character set
|
||||||
|
*/
|
||||||
|
protected String getCollation()
|
||||||
|
{
|
||||||
|
return COLLATION;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Auto-incrementing SQL type to use for IDs
|
* Auto-incrementing SQL type to use for IDs
|
||||||
* Must be an integer type, which values will be automatically set by the database
|
* Must be an integer type, which values will be automatically set by the database
|
||||||
@ -208,7 +219,7 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
StringUtils.format(
|
StringUtils.format(
|
||||||
"CREATE TABLE %1$s (\n"
|
"CREATE TABLE %1$s (\n"
|
||||||
+ " id VARCHAR(255) NOT NULL,\n"
|
+ " id VARCHAR(255) NOT NULL,\n"
|
||||||
+ " dataSource VARCHAR(255) NOT NULL,\n"
|
+ " dataSource VARCHAR(255) %4$s NOT NULL,\n"
|
||||||
+ " created_date VARCHAR(255) NOT NULL,\n"
|
+ " created_date VARCHAR(255) NOT NULL,\n"
|
||||||
+ " start VARCHAR(255) NOT NULL,\n"
|
+ " start VARCHAR(255) NOT NULL,\n"
|
||||||
+ " %3$send%3$s VARCHAR(255) NOT NULL,\n"
|
+ " %3$send%3$s VARCHAR(255) NOT NULL,\n"
|
||||||
@ -219,7 +230,7 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
+ " PRIMARY KEY (id),\n"
|
+ " PRIMARY KEY (id),\n"
|
||||||
+ " UNIQUE (sequence_name_prev_id_sha1)\n"
|
+ " UNIQUE (sequence_name_prev_id_sha1)\n"
|
||||||
+ ")",
|
+ ")",
|
||||||
tableName, getPayloadType(), getQuoteString()
|
tableName, getPayloadType(), getQuoteString(), getCollation()
|
||||||
),
|
),
|
||||||
StringUtils.format(
|
StringUtils.format(
|
||||||
"CREATE INDEX idx_%1$s_datasource_end ON %1$s(dataSource, %2$send%2$s)",
|
"CREATE INDEX idx_%1$s_datasource_end ON %1$s(dataSource, %2$send%2$s)",
|
||||||
@ -241,13 +252,13 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
StringUtils.format(
|
StringUtils.format(
|
||||||
"CREATE TABLE %1$s (\n"
|
"CREATE TABLE %1$s (\n"
|
||||||
+ " dataSource VARCHAR(255) NOT NULL,\n"
|
+ " dataSource VARCHAR(255) %3$s NOT NULL,\n"
|
||||||
+ " created_date VARCHAR(255) NOT NULL,\n"
|
+ " created_date VARCHAR(255) NOT NULL,\n"
|
||||||
+ " commit_metadata_payload %2$s NOT NULL,\n"
|
+ " commit_metadata_payload %2$s NOT NULL,\n"
|
||||||
+ " commit_metadata_sha1 VARCHAR(255) NOT NULL,\n"
|
+ " commit_metadata_sha1 VARCHAR(255) NOT NULL,\n"
|
||||||
+ " PRIMARY KEY (dataSource)\n"
|
+ " PRIMARY KEY (dataSource)\n"
|
||||||
+ ")",
|
+ ")",
|
||||||
tableName, getPayloadType()
|
tableName, getPayloadType(), getCollation()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -261,7 +272,7 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
StringUtils.format(
|
StringUtils.format(
|
||||||
"CREATE TABLE %1$s (\n"
|
"CREATE TABLE %1$s (\n"
|
||||||
+ " id VARCHAR(255) NOT NULL,\n"
|
+ " id VARCHAR(255) NOT NULL,\n"
|
||||||
+ " dataSource VARCHAR(255) NOT NULL,\n"
|
+ " dataSource VARCHAR(255) %4$s NOT NULL,\n"
|
||||||
+ " created_date VARCHAR(255) NOT NULL,\n"
|
+ " created_date VARCHAR(255) NOT NULL,\n"
|
||||||
+ " start VARCHAR(255) NOT NULL,\n"
|
+ " start VARCHAR(255) NOT NULL,\n"
|
||||||
+ " %3$send%3$s VARCHAR(255) NOT NULL,\n"
|
+ " %3$send%3$s VARCHAR(255) NOT NULL,\n"
|
||||||
@ -271,7 +282,7 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
+ " payload %2$s NOT NULL,\n"
|
+ " payload %2$s NOT NULL,\n"
|
||||||
+ " PRIMARY KEY (id)\n"
|
+ " PRIMARY KEY (id)\n"
|
||||||
+ ")",
|
+ ")",
|
||||||
tableName, getPayloadType(), getQuoteString()
|
tableName, getPayloadType(), getQuoteString(), getCollation()
|
||||||
),
|
),
|
||||||
StringUtils.format("CREATE INDEX idx_%1$s_used ON %1$s(used)", tableName),
|
StringUtils.format("CREATE INDEX idx_%1$s_used ON %1$s(used)", tableName),
|
||||||
StringUtils.format(
|
StringUtils.format(
|
||||||
@ -291,12 +302,12 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
StringUtils.format(
|
StringUtils.format(
|
||||||
"CREATE TABLE %1$s (\n"
|
"CREATE TABLE %1$s (\n"
|
||||||
+ " id VARCHAR(255) NOT NULL,\n"
|
+ " id VARCHAR(255) NOT NULL,\n"
|
||||||
+ " dataSource VARCHAR(255) NOT NULL,\n"
|
+ " dataSource VARCHAR(255) %3$s NOT NULL,\n"
|
||||||
+ " version VARCHAR(255) NOT NULL,\n"
|
+ " version VARCHAR(255) NOT NULL,\n"
|
||||||
+ " payload %2$s NOT NULL,\n"
|
+ " payload %2$s NOT NULL,\n"
|
||||||
+ " PRIMARY KEY (id)\n"
|
+ " PRIMARY KEY (id)\n"
|
||||||
+ ")",
|
+ ")",
|
||||||
tableName, getPayloadType()
|
tableName, getPayloadType(), getCollation()
|
||||||
),
|
),
|
||||||
StringUtils.format("CREATE INDEX idx_%1$s_datasource ON %1$s(dataSource)", tableName)
|
StringUtils.format("CREATE INDEX idx_%1$s_datasource ON %1$s(dataSource)", tableName)
|
||||||
)
|
)
|
||||||
@ -329,13 +340,13 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||||||
"CREATE TABLE %1$s (\n"
|
"CREATE TABLE %1$s (\n"
|
||||||
+ " id VARCHAR(255) NOT NULL,\n"
|
+ " id VARCHAR(255) NOT NULL,\n"
|
||||||
+ " created_date VARCHAR(255) NOT NULL,\n"
|
+ " created_date VARCHAR(255) NOT NULL,\n"
|
||||||
+ " datasource VARCHAR(255) NOT NULL,\n"
|
+ " datasource VARCHAR(255) %3$s NOT NULL,\n"
|
||||||
+ " payload %2$s NOT NULL,\n"
|
+ " payload %2$s NOT NULL,\n"
|
||||||
+ " status_payload %2$s NOT NULL,\n"
|
+ " status_payload %2$s NOT NULL,\n"
|
||||||
+ " active BOOLEAN NOT NULL DEFAULT FALSE,\n"
|
+ " active BOOLEAN NOT NULL DEFAULT FALSE,\n"
|
||||||
+ " PRIMARY KEY (id)\n"
|
+ " PRIMARY KEY (id)\n"
|
||||||
+ ")",
|
+ ")",
|
||||||
tableName, getPayloadType()
|
tableName, getPayloadType(), getCollation()
|
||||||
),
|
),
|
||||||
StringUtils.format("CREATE INDEX idx_%1$s_active_created_date ON %1$s(active, created_date)", tableName)
|
StringUtils.format("CREATE INDEX idx_%1$s_active_created_date ON %1$s(active, created_date)", tableName)
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user