Skip to content

Commit

Permalink
[misc] code style correction
Browse files Browse the repository at this point in the history
  • Loading branch information
rusher committed Jul 8, 2024
1 parent 308cbb5 commit 873dde7
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 64 deletions.
84 changes: 44 additions & 40 deletions src/main/java/org/mariadb/jdbc/DatabaseMetaData.java
Original file line number Diff line number Diff line change
Expand Up @@ -188,13 +188,17 @@ private int parseIdentifierList(char[] part, int startPos, List<Identifier> list
}

private void parseShowCreateTable(
String tableDef, String database, String tableName, boolean importedKeysWithConstraintNames, List<String[]> data)
String tableDef,
String database,
String tableName,
boolean importedKeysWithConstraintNames,
List<String[]> data)
throws ParseException, SQLException {
String[] parts = tableDef.split("\n");
for (String part : parts) {
part = part.trim();
if (!part.toUpperCase(Locale.ROOT).startsWith("CONSTRAINT")
&& !part.toUpperCase(Locale.ROOT).contains("FOREIGN KEY")) {
&& !part.toUpperCase(Locale.ROOT).contains("FOREIGN KEY")) {
continue;
}
char[] partChar = part.toCharArray();
Expand All @@ -216,7 +220,7 @@ private void parseShowCreateTable(
int onDeleteReferenceAction = java.sql.DatabaseMetaData.importedKeyRestrict;

for (String referenceAction :
new String[] {"RESTRICT", "CASCADE", "SET NULL", "NO ACTION", "SET DEFAULT"}) {
new String[] {"RESTRICT", "CASCADE", "SET NULL", "NO ACTION", "SET DEFAULT"}) {
if (part.toUpperCase(Locale.ROOT).contains("ON UPDATE " + referenceAction)) {
onUpdateReferenceAction = getImportedKeyAction(referenceAction);
}
Expand All @@ -229,13 +233,13 @@ private void parseShowCreateTable(

String[] row = new String[14];
row[0] =
conf.useCatalogTerm() == CatalogTerm.UseCatalog
? (pkTable.schema == null ? database : pkTable.schema)
: "def"; // PKTABLE_CAT
conf.useCatalogTerm() == CatalogTerm.UseCatalog
? (pkTable.schema == null ? database : pkTable.schema)
: "def"; // PKTABLE_CAT
row[1] =
conf.useCatalogTerm() == CatalogTerm.UseSchema
? (pkTable.schema == null ? database : pkTable.schema)
: null; // PKTABLE_SCHEM
conf.useCatalogTerm() == CatalogTerm.UseSchema
? (pkTable.schema == null ? database : pkTable.schema)
: null; // PKTABLE_SCHEM
row[2] = pkTable.name; // PKTABLE_NAME
row[3] = primaryKeyCols.get(i).name; // PKCOLUMN_NAME
row[4] = conf.useCatalogTerm() == CatalogTerm.UseCatalog ? database : "def"; // FKTABLE_CAT
Expand All @@ -248,8 +252,9 @@ private void parseShowCreateTable(
row[11] = constraintName.name; // FK_NAME
if (importedKeysWithConstraintNames) {
String ext =
quoteIdentifier(pkTable.schema == null ? database : pkTable.schema) + "."
+ quoteIdentifier(pkTable.name);
quoteIdentifier(pkTable.schema == null ? database : pkTable.schema)
+ "."
+ quoteIdentifier(pkTable.name);
if (!externalInfos.containsKey(ext)) {
externalInfos.put(ext, getExtImportedKeys(ext, connection));
}
Expand Down Expand Up @@ -302,7 +307,9 @@ private Map<String[], String> getExtImportedKeys(
// field
continue;
}
if (part.startsWith("PRIMARY KEY") || part.startsWith("UNIQUE KEY") || part.startsWith("KEY")) {
if (part.startsWith("PRIMARY KEY")
|| part.startsWith("UNIQUE KEY")
|| part.startsWith("KEY")) {
String name = "PRIMARY";
if (part.indexOf("`") < part.indexOf("(")) {
int offset = part.indexOf("`");
Expand Down Expand Up @@ -403,8 +410,8 @@ public ResultSet getImportedKeys(String catalog, String schema, String table)
try {
return getImportedKeysUsingShowCreateTable(database, table);
} catch (Exception e) {
// since 3.4.1 show create is now used by default, and there is no reason to have parsing exception,
// but cannot remove that try-catch in a correction release.
// since 3.4.1 show create is now used by default, and there is no reason to have parsing
// exception, but cannot remove that try-catch in a correction release.
// TODO to be removed next minor version
return getImportedKeysUsingInformationSchema(database, table);
}
Expand Down Expand Up @@ -1055,36 +1062,33 @@ public ResultSet getImportedKeysUsingShowCreateTable(final String database, Stri
throws Exception {

boolean importedKeysWithConstraintNames =
Boolean.parseBoolean(
conf.nonMappedOptions().getProperty("importedKeysWithConstraintNames", "true"));
Boolean.parseBoolean(
conf.nonMappedOptions().getProperty("importedKeysWithConstraintNames", "true"));
String[] columnNames = {
"PKTABLE_CAT", "PKTABLE_SCHEM", "PKTABLE_NAME",
"PKCOLUMN_NAME", "FKTABLE_CAT", "FKTABLE_SCHEM",
"FKTABLE_NAME", "FKCOLUMN_NAME", "KEY_SEQ",
"UPDATE_RULE", "DELETE_RULE", "FK_NAME",
"PK_NAME", "DEFERRABILITY"
"PKTABLE_CAT", "PKTABLE_SCHEM", "PKTABLE_NAME",
"PKCOLUMN_NAME", "FKTABLE_CAT", "FKTABLE_SCHEM",
"FKTABLE_NAME", "FKCOLUMN_NAME", "KEY_SEQ",
"UPDATE_RULE", "DELETE_RULE", "FK_NAME",
"PK_NAME", "DEFERRABILITY"
};
DataType[] dataTypes = {
DataType.VARCHAR, DataType.NULL, DataType.VARCHAR,
DataType.VARCHAR, DataType.VARCHAR, DataType.NULL,
DataType.VARCHAR, DataType.VARCHAR, DataType.SMALLINT,
DataType.SMALLINT, DataType.SMALLINT, DataType.VARCHAR,
DataType.VARCHAR, DataType.SMALLINT
DataType.VARCHAR, DataType.NULL, DataType.VARCHAR,
DataType.VARCHAR, DataType.VARCHAR, DataType.NULL,
DataType.VARCHAR, DataType.VARCHAR, DataType.SMALLINT,
DataType.SMALLINT, DataType.SMALLINT, DataType.VARCHAR,
DataType.VARCHAR, DataType.SMALLINT
};


List<String[]> data = new ArrayList<>();

Statement stmt = connection.createStatement();
if (database != null) {
ResultSet rs =
stmt
.executeQuery(
"SHOW CREATE TABLE " + quoteIdentifier(database) + "." + quoteIdentifier(table));
stmt.executeQuery(
"SHOW CREATE TABLE " + quoteIdentifier(database) + "." + quoteIdentifier(table));
rs.next();
String tableDef = rs.getString(2);
parseShowCreateTable(
tableDef, database, table, importedKeysWithConstraintNames, data);
parseShowCreateTable(tableDef, database, table, importedKeysWithConstraintNames, data);

} else {
List<String> databases = new ArrayList<>();
Expand Down Expand Up @@ -1116,7 +1120,8 @@ public ResultSet getImportedKeysUsingShowCreateTable(final String database, Stri
if (result == 0) {
result = row1[2].compareTo(row2[2]); // PKTABLE_NAME
if (result == 0) {
if (row1[12] != null) result = row1[12].compareTo(row2[12]); // adding PK_NAME for reliability
if (row1[12] != null)
result = row1[12].compareTo(row2[12]); // adding PK_NAME for reliability
if (result == 0) {
result = row1[8].length() - row2[8].length(); // KEY_SEQ
if (result == 0) {
Expand All @@ -1129,13 +1134,12 @@ public ResultSet getImportedKeysUsingShowCreateTable(final String database, Stri
return result;
});
return CompleteResult.createResultSet(
columnNames,
dataTypes,
arr,
connection.getContext(),
ColumnFlags.PRIMARY_KEY,
ResultSet.TYPE_SCROLL_INSENSITIVE);

columnNames,
dataTypes,
arr,
connection.getContext(),
ColumnFlags.PRIMARY_KEY,
ResultSet.TYPE_SCROLL_INSENSITIVE);
}

/**
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/org/mariadb/jdbc/HostAddress.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,20 @@ public static HostAddress from(String host, int port) {

/**
* Constructor for windows pipe host
*
* @param pipe windows pipe path
* @return hostAddress
*/
public static HostAddress pipe(String pipe) {
return new HostAddress(null, 3306, null, pipe, null, null);
}

/**
* Constructor for unix socket host
*
* @param localSocket unix socket path
* @return hostAddress
*/

public static HostAddress localSocket(String localSocket) {
return new HostAddress(null, 3306, null, null, localSocket, null);
}
Expand Down Expand Up @@ -145,6 +147,7 @@ public static List<HostAddress> parse(String spec, HaMode haMode) throws SQLExce

/**
* Parse Single host
*
* @param str string to parse
* @param haMode current High-Availability mode
* @param first is it the first host
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,5 @@ public final class OptionAliases {
OPTIONS_ALIASES.put("clientcertificatekeystoretype", "keyStoreType");
OPTIONS_ALIASES.put("nullcatalogmeanscurrent", "nullDatabaseMeansCurrent");
OPTIONS_ALIASES.put("databaseterm", "useCatalogTerm");

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -249,12 +249,12 @@ public void primaryKeyTest2Schema() throws SQLException {
stmt.execute("drop table if exists primarykeytest1");
stmt.execute("CREATE TABLE primarykeytest1 ( id1 integer, constraint pk primary key(id1))");
stmt.execute(
"CREATE TABLE primarykeytest2 (" +
"id2a integer, " +
"id2b integer, " +
"constraint pk primary key(id2a, id2b), " +
"constraint fk11 foreign key fk1 (id2a) references primarykeytest1(id1), " +
"constraint fk21 foreign key fk2 (id2b) references primarykeytest1(id1))");
"CREATE TABLE primarykeytest2 ("
+ "id2a integer, "
+ "id2b integer, "
+ "constraint pk primary key(id2a, id2b), "
+ "constraint fk11 foreign key fk1 (id2a) references primarykeytest1(id1), "
+ "constraint fk21 foreign key fk2 (id2b) references primarykeytest1(id1))");

DatabaseMetaData dbmd = con.getMetaData();
ResultSet rs = dbmd.getPrimaryKeys(con.getCatalog(), null, "primarykeytest2");
Expand Down Expand Up @@ -636,25 +636,23 @@ public void exportedImportedKeysTest() throws SQLException {
Statement stmt = sharedConn.createStatement();
stmt.execute("DROP TABLE IF EXISTS ref_snippet");
stmt.execute("DROP TABLE IF EXISTS data_user");
stmt.execute("CREATE TABLE `data_user` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT," +
" `username` varchar(50) NOT NULL," +
" `alias` varchar(50) NOT NULL," +
" `active` bit(1) NOT NULL," +
" PRIMARY KEY (`id`)," +
" KEY `ix_user__user` (`username`,`active`)," +
" UNIQUE KEY `uk_user__alias` (`alias`)) ENGINE=InnoDB");
stmt.execute(
"CREATE TABLE `ref_snippet` ("
"CREATE TABLE `data_user` ("
+ " `id` int(11) NOT NULL AUTO_INCREMENT,"
+ " `snippet` varchar(2000) NOT NULL,"
+ " `username` varchar(50) NOT NULL,"
+ " `alias` varchar(50) NOT NULL,"
+ " `active` bit(1) NOT NULL,"
+ " `created_by` varchar(50) NOT NULL,"
+ " `created_alias` varchar(50) NOT NULL,"
+ " PRIMARY KEY (`id`),"
+ " KEY `ix_snippet__owner` (`created_by`,`active`),"
+ " CONSTRAINT `fk_snippet__user__username` FOREIGN KEY (`created_by`) REFERENCES `data_user` (`username`),"
+ " CONSTRAINT `fk_snippet__user__alias` FOREIGN KEY (`created_alias`) REFERENCES `data_user` (`alias`)) ENGINE=InnoDB");
+ " KEY `ix_user__user` (`username`,`active`),"
+ " UNIQUE KEY `uk_user__alias` (`alias`)) ENGINE=InnoDB");
stmt.execute(
"CREATE TABLE `ref_snippet` ( `id` int(11) NOT NULL AUTO_INCREMENT, `snippet`"
+ " varchar(2000) NOT NULL, `active` bit(1) NOT NULL, `created_by` varchar(50) NOT"
+ " NULL, `created_alias` varchar(50) NOT NULL, PRIMARY KEY (`id`), KEY"
+ " `ix_snippet__owner` (`created_by`,`active`), CONSTRAINT"
+ " `fk_snippet__user__username` FOREIGN KEY (`created_by`) REFERENCES `data_user`"
+ " (`username`), CONSTRAINT `fk_snippet__user__alias` FOREIGN KEY (`created_alias`)"
+ " REFERENCES `data_user` (`alias`)) ENGINE=InnoDB");

DatabaseMetaData meta = sharedConn.getMetaData();
ResultSet rs = meta.getExportedKeys(database, null, "data_user");
Expand All @@ -671,7 +669,7 @@ public void exportedImportedKeysTest() throws SQLException {
stmt.execute("DROP TABLE data_user");
}

@Test
@Test
public void exportedKeysTest() throws SQLException {

DatabaseMetaData dbmd = sharedConn.getMetaData();
Expand Down

0 comments on commit 873dde7

Please sign in to comment.