mirror of https://github.com/apache/druid.git
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 SERIAL_TYPE = "BIGINT(20) AUTO_INCREMENT";
|
||||
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 final DBI dbi;
|
||||
|
@ -158,6 +159,12 @@ public class MySQLConnector extends SQLMetadataConnector
|
|||
return SERIAL_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCollation()
|
||||
{
|
||||
return COLLATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
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 String PAYLOAD_TYPE = "BLOB";
|
||||
private static final String COLLATION = "";
|
||||
|
||||
static final int DEFAULT_MAX_TRIES = 10;
|
||||
|
||||
|
@ -93,6 +94,16 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||
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
|
||||
* 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(
|
||||
"CREATE TABLE %1$s (\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"
|
||||
+ " start 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"
|
||||
+ " UNIQUE (sequence_name_prev_id_sha1)\n"
|
||||
+ ")",
|
||||
tableName, getPayloadType(), getQuoteString()
|
||||
tableName, getPayloadType(), getQuoteString(), getCollation()
|
||||
),
|
||||
StringUtils.format(
|
||||
"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(
|
||||
StringUtils.format(
|
||||
"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"
|
||||
+ " commit_metadata_payload %2$s NOT NULL,\n"
|
||||
+ " commit_metadata_sha1 VARCHAR(255) NOT NULL,\n"
|
||||
+ " PRIMARY KEY (dataSource)\n"
|
||||
+ ")",
|
||||
tableName, getPayloadType()
|
||||
tableName, getPayloadType(), getCollation()
|
||||
)
|
||||
)
|
||||
);
|
||||
|
@ -261,7 +272,7 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||
StringUtils.format(
|
||||
"CREATE TABLE %1$s (\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"
|
||||
+ " start 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"
|
||||
+ " 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(
|
||||
|
@ -291,12 +302,12 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
|||
StringUtils.format(
|
||||
"CREATE TABLE %1$s (\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"
|
||||
+ " payload %2$s NOT NULL,\n"
|
||||
+ " PRIMARY KEY (id)\n"
|
||||
+ ")",
|
||||
tableName, getPayloadType()
|
||||
tableName, getPayloadType(), getCollation()
|
||||
),
|
||||
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"
|
||||
+ " id 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"
|
||||
+ " status_payload %2$s NOT NULL,\n"
|
||||
+ " active BOOLEAN NOT NULL DEFAULT FALSE,\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)
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue