diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateDatabaseTable.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateDatabaseTable.java index 743e3f895d1a..632537781b1f 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateDatabaseTable.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateDatabaseTable.java @@ -495,6 +495,9 @@ private synchronized OutputMetadataHolder checkAndUpdateTableSchema( // Read in the current table metadata, compare it to the reader's schema, and // add any columns from the schema that are missing in the table try (final Statement s = conn.createStatement()) { + final DatabaseMetaData databaseMetaData = conn.getMetaData(); + final String quoteString = databaseMetaData.getIdentifierQuoteString(); + // Determine whether the table exists TableSchema tableSchema = null; try { @@ -507,8 +510,6 @@ private synchronized OutputMetadataHolder checkAndUpdateTableSchema( boolean tableCreated = false; if (tableSchema == null) { if (createIfNotExists) { - final DatabaseMetaData databaseMetaData = conn.getMetaData(); - final String quoteString = databaseMetaData.getIdentifierQuoteString(); // Create a TableSchema from the record, adding all columns for (RecordField recordField : schema.getFields()) { @@ -523,22 +524,16 @@ private synchronized OutputMetadataHolder checkAndUpdateTableSchema( columnName = recordFieldName; } - final String qualifiedColumnName; - if (quoteColumnNames) { - qualifiedColumnName = s.enquoteIdentifier(columnName, true); - } else { - qualifiedColumnName = columnName; - } - final int dataType = DataTypeUtils.getSQLTypeValue(recordField.getDataType()); - columns.add(new ColumnDescription(qualifiedColumnName, dataType, required, null, recordField.isNullable())); + final String quotedColumnName = enquoteIdentifier(columnName, quoteString, quoteColumnNames); + columns.add(new ColumnDescription(quotedColumnName, dataType, required, null, recordField.isNullable())); getLogger().debug("Adding column {} to table {}", columnName, tableName); } - final String qualifiedCatalogName = catalogName == null ? null : s.enquoteIdentifier(catalogName, quoteTableName); - final String qualifiedSchemaName = schemaName == null ? null : s.enquoteIdentifier(schemaName, quoteTableName); - final String qualifiedTableName = s.enquoteIdentifier(tableName, quoteTableName); - tableSchema = new TableSchema(qualifiedCatalogName, qualifiedSchemaName, qualifiedTableName, columns, translateFieldNames, normalizer, primaryKeyColumnNames, quoteString); + final String quotedCatalogName = enquoteIdentifier(catalogName, quoteString, quoteTableName); + final String quotedSchemaName = enquoteIdentifier(schemaName, quoteString, quoteTableName); + final String quotedTableName = enquoteIdentifier(tableName, quoteString, quoteTableName); + tableSchema = new TableSchema(quotedCatalogName, quotedSchemaName, quotedTableName, columns, translateFieldNames, normalizer, primaryKeyColumnNames, quoteString); final TableDefinition tableDefinition = getTableDefinition(tableSchema); final StatementRequest statementRequest = new StandardStatementRequest(StatementType.CREATE, tableDefinition); @@ -583,7 +578,7 @@ private synchronized OutputMetadataHolder checkAndUpdateTableSchema( if (!columnsToAdd.isEmpty()) { final List columnDefinitions = columnsToAdd.stream().map(columnDescription -> new StandardColumnDefinition( - columnDescription.getColumnName(), + enquoteIdentifier(columnDescription.getColumnName(), quoteString, quoteColumnNames), columnDescription.getDataType(), columnDescription.isNullable() ? ColumnDefinition.Nullable.YES : ColumnDefinition.Nullable.UNKNOWN, columnDescription.isRequired() @@ -591,7 +586,8 @@ private synchronized OutputMetadataHolder checkAndUpdateTableSchema( ) .map(ColumnDefinition.class::cast) .toList(); - final TableDefinition tableDefinition = new TableDefinition(Optional.empty(), Optional.empty(), tableName, columnDefinitions); + final String qualifiedTableName = enquoteIdentifier(tableName, quoteString, quoteTableName); + final TableDefinition tableDefinition = new TableDefinition(Optional.empty(), Optional.empty(), qualifiedTableName, columnDefinitions); final StatementRequest statementRequest = new StandardStatementRequest(StatementType.ALTER, tableDefinition); final StatementResponse statementResponse = databaseDialectService.getStatement(statementRequest); @@ -700,6 +696,13 @@ private TableDefinition getTableDefinition(final TableSchema tableSchema) { ); } + private String enquoteIdentifier(final String identifier, final String quotedIdentifierString, final boolean quoteIdentifier) { + if (identifier != null && quoteIdentifier) { + return quotedIdentifierString + identifier + quotedIdentifierString; + } + return identifier; + } + private static class OutputMetadataHolder { private final RecordSchema outputSchema; private final Map fieldMap; diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapter.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapter.java index 7e73e670c4df..0798b1c61353 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapter.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapter.java @@ -114,21 +114,6 @@ default String getTableAliasClause(String tableName) { return "AS " + tableName; } - /** - * Table Quote String usage limited to statement generation methods within DatabaseAdapter - * - * @return Table Quote String - */ - default String getTableQuoteString() { - // ANSI standard is a double quote - return "\""; - } - - default String getColumnQuoteString() { - // ANSI standard is a double quote - return "\""; - } - default boolean supportsCreateTableIfNotExists() { return false; } @@ -136,11 +121,9 @@ default boolean supportsCreateTableIfNotExists() { /** * Generates a CREATE TABLE statement using the specified table schema * @param tableSchema The table schema including column information - * @param quoteTableName Whether to quote the table name in the generated DDL - * @param quoteColumnNames Whether to quote column names in the generated DDL * @return A String containing DDL to create the specified table */ - default String getCreateTableStatement(TableSchema tableSchema, boolean quoteTableName, boolean quoteColumnNames) { + default String getCreateTableStatement(TableSchema tableSchema) { StringBuilder createTableStatement = new StringBuilder(); List columns = tableSchema.getColumnsAsList(); @@ -148,9 +131,7 @@ default String getCreateTableStatement(TableSchema tableSchema, boolean quoteTab Set primaryKeyColumnNames = tableSchema.getPrimaryKeyColumnNames(); for (ColumnDescription column : columns) { StringBuilder sb = new StringBuilder() - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(getSQLForDataType(column.getDataType())) .append(column.isNullable() ? "" : " NOT NULL") @@ -159,7 +140,7 @@ default String getCreateTableStatement(TableSchema tableSchema, boolean quoteTab } createTableStatement.append("CREATE TABLE IF NOT EXISTS ") - .append(generateTableName(quoteTableName, tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) + .append(generateTableName(tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) .append(" (") .append(String.join(", ", columnsAndDatatypes)) .append(") "); @@ -167,24 +148,20 @@ default String getCreateTableStatement(TableSchema tableSchema, boolean quoteTab return createTableStatement.toString(); } - default String getAlterTableStatement(String tableName, List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + default String getAlterTableStatement(String tableName, List columnsToAdd) { StringBuilder createTableStatement = new StringBuilder(); List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { StringBuilder sb = new StringBuilder() - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(getSQLForDataType(column.getDataType())); columnsAndDatatypes.add(sb.toString()); } createTableStatement.append("ALTER TABLE ") - .append(quoteTableName ? getTableQuoteString() : "") .append(tableName) - .append(quoteTableName ? getTableQuoteString() : "") .append(" ADD COLUMNS (") .append(String.join(", ", columnsAndDatatypes)) .append(") "); @@ -208,39 +185,19 @@ default String getSQLForDataType(int sqlType) { return JDBCType.valueOf(sqlType).getName(); } - default String generateTableName(final boolean quoteTableName, final String catalog, final String schemaName, final String tableName, final TableSchema tableSchema) { + default String generateTableName(final String catalog, final String schemaName, final String tableName, final TableSchema tableSchema) { final StringBuilder tableNameBuilder = new StringBuilder(); if (catalog != null) { - if (quoteTableName) { - tableNameBuilder.append(tableSchema.getQuotedIdentifierString()) - .append(catalog) - .append(tableSchema.getQuotedIdentifierString()); - } else { - tableNameBuilder.append(catalog); - } - + tableNameBuilder.append(catalog); tableNameBuilder.append("."); } if (schemaName != null) { - if (quoteTableName) { - tableNameBuilder.append(tableSchema.getQuotedIdentifierString()) - .append(schemaName) - .append(tableSchema.getQuotedIdentifierString()); - } else { - tableNameBuilder.append(schemaName); - } - + tableNameBuilder.append(schemaName); tableNameBuilder.append("."); } - if (quoteTableName) { - tableNameBuilder.append(tableSchema.getQuotedIdentifierString()) - .append(tableName) - .append(tableSchema.getQuotedIdentifierString()); - } else { - tableNameBuilder.append(tableName); - } + tableNameBuilder.append(tableName); return tableNameBuilder.toString(); } diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapterDatabaseDialectService.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapterDatabaseDialectService.java index 5cfccfb8c3dc..6586bd02dfe3 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapterDatabaseDialectService.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/DatabaseAdapterDatabaseDialectService.java @@ -90,10 +90,10 @@ public StatementResponse getStatement(final StatementRequest statementRequest) { final String sql; if (StatementType.ALTER == statementType) { - sql = databaseAdapter.getAlterTableStatement(tableDefinition.tableName(), columnDescriptions, true, true); + sql = databaseAdapter.getAlterTableStatement(tableDefinition.tableName(), columnDescriptions); } else if (StatementType.CREATE == statementType) { final TableSchema tableSchema = getTableSchema(tableDefinition); - sql = databaseAdapter.getCreateTableStatement(tableSchema, false, false); + sql = databaseAdapter.getCreateTableStatement(tableSchema); } else if (StatementType.UPSERT == statementType) { sql = databaseAdapter.getUpsertStatement(tableDefinition.tableName(), columnNames, primaryKeyColumnNames); } else if (StatementType.INSERT_IGNORE == statementType) { diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MSSQLDatabaseAdapter.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MSSQLDatabaseAdapter.java index 67567899c9eb..d3e88d20fdd9 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MSSQLDatabaseAdapter.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MSSQLDatabaseAdapter.java @@ -104,14 +104,12 @@ public String getSelectStatement(String tableName, String columnNames, String wh } @Override - public String getAlterTableStatement(final String tableName, final List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(final String tableName, final List columnsToAdd) { List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder("ADD ") - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); @@ -119,9 +117,7 @@ public String getAlterTableStatement(final String tableName, final List columnNames, C return statementStringBuilder.toString(); } - @Override - public String getTableQuoteString() { - return "`"; - } - - @Override - public String getColumnQuoteString() { - return "`"; - } - @Override public boolean supportsCreateTableIfNotExists() { return true; } @Override - public String getAlterTableStatement(final String tableName, final List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(final String tableName, final List columnsToAdd) { List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder("ADD COLUMN ") - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); @@ -152,9 +140,7 @@ public String getAlterTableStatement(final String tableName, final List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(String tableName, List columnsToAdd) { StringBuilder createTableStatement = new StringBuilder(); List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder() - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); } createTableStatement.append("ALTER TABLE ") - .append(quoteTableName ? getTableQuoteString() : "") .append(tableName) - .append(quoteTableName ? getTableQuoteString() : "") .append(" ADD (") .append(String.join(", ", columnsAndDatatypes)) .append(") "); @@ -256,15 +252,13 @@ public boolean supportsCreateTableIfNotExists() { /** * Generates a CREATE TABLE statement using the specified table schema * @param tableSchema The table schema including column information - * @param quoteTableName Whether to quote the table name in the generated DDL - * @param quoteColumnNames Whether to quote column names in the generated DDL * @return A String containing DDL to create the specified table */ @Override - public String getCreateTableStatement(TableSchema tableSchema, boolean quoteTableName, boolean quoteColumnNames) { + public String getCreateTableStatement(TableSchema tableSchema) { StringBuilder createTableStatement = new StringBuilder() .append("DECLARE\n\tsql_stmt long;\nBEGIN\n\tsql_stmt:='CREATE TABLE ") - .append(generateTableName(quoteTableName, tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) + .append(generateTableName(tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) .append(" ("); List columns = tableSchema.getColumnsAsList(); @@ -273,9 +267,7 @@ public String getCreateTableStatement(TableSchema tableSchema, boolean quoteTabl ColumnDescription column = columns.get(i); createTableStatement .append((i != 0) ? ", " : "") - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(getSQLForDataType(column.getDataType())) .append(column.isNullable() ? "" : " NOT NULL") diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/OracleDatabaseAdapter.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/OracleDatabaseAdapter.java index c07c56f0752f..4dc81aa85ae0 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/OracleDatabaseAdapter.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/OracleDatabaseAdapter.java @@ -128,25 +128,21 @@ public String getTableAliasClause(String tableName) { } @Override - public String getAlterTableStatement(String tableName, List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(String tableName, List columnsToAdd) { StringBuilder createTableStatement = new StringBuilder(); List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder() - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); } createTableStatement.append("ALTER TABLE ") - .append(quoteTableName ? getTableQuoteString() : "") .append(tableName) - .append(quoteTableName ? getTableQuoteString() : "") .append(" ADD (") .append(String.join(", ", columnsAndDatatypes)) .append(") "); @@ -184,15 +180,13 @@ public boolean supportsCreateTableIfNotExists() { /** * Generates a CREATE TABLE statement using the specified table schema * @param tableSchema The table schema including column information - * @param quoteTableName Whether to quote the table name in the generated DDL - * @param quoteColumnNames Whether to quote column names in the generated DDL * @return A String containing DDL to create the specified table */ @Override - public String getCreateTableStatement(TableSchema tableSchema, boolean quoteTableName, boolean quoteColumnNames) { + public String getCreateTableStatement(TableSchema tableSchema) { StringBuilder createTableStatement = new StringBuilder() .append("DECLARE\n\tsql_stmt long;\nBEGIN\n\tsql_stmt:='CREATE TABLE ") - .append(generateTableName(quoteTableName, tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) + .append(generateTableName(tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) .append(" ("); List columns = tableSchema.getColumnsAsList(); @@ -201,9 +195,7 @@ public String getCreateTableStatement(TableSchema tableSchema, boolean quoteTabl ColumnDescription column = columns.get(i); createTableStatement .append((i != 0) ? ", " : "") - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(getSQLForDataType(column.getDataType())) .append(column.isNullable() ? "" : " NOT NULL") diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/PhoenixDatabaseAdapter.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/PhoenixDatabaseAdapter.java index 3111f36cc96b..6c8b1bb29c0a 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/PhoenixDatabaseAdapter.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/PhoenixDatabaseAdapter.java @@ -144,14 +144,12 @@ public boolean supportsCreateTableIfNotExists() { } @Override - public String getAlterTableStatement(final String tableName, final List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(final String tableName, final List columnsToAdd) { List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder("ADD COLUMN ") - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); @@ -159,9 +157,7 @@ public String getAlterTableStatement(final String tableName, final List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(final String tableName, final List columnsToAdd) { List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder("ADD COLUMN ") - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); @@ -150,9 +148,7 @@ public String getAlterTableStatement(final String tableName, final List columns = tableSchema.getColumnsAsList(); @@ -125,9 +125,7 @@ public String getCreateTableStatement(final TableSchema tableSchema, final boole Set primaryKeyColumnNames = tableSchema.getPrimaryKeyColumnNames(); for (ColumnDescription column : columns) { StringBuilder sb = new StringBuilder() - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(getSQLForDataType(column.getDataType())) .append(column.isNullable() ? "" : " NOT NULL") @@ -137,7 +135,7 @@ public String getCreateTableStatement(final TableSchema tableSchema, final boole // This will throw an exception if the table already exists, but it should only be used for tests createTableStatement.append("CREATE TABLE ") - .append(generateTableName(quoteTableName, tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) + .append(generateTableName(tableSchema.getCatalogName(), tableSchema.getSchemaName(), tableSchema.getTableName(), tableSchema)) .append(" (") .append(String.join(", ", columnsAndDatatypes)) .append(") "); @@ -146,16 +144,14 @@ public String getCreateTableStatement(final TableSchema tableSchema, final boole } @Override - public String getAlterTableStatement(final String tableName, final List columnsToAdd, final boolean quoteTableName, final boolean quoteColumnNames) { + public String getAlterTableStatement(final String tableName, final List columnsToAdd) { List alterTableStatements = new ArrayList<>(); List columnsAndDatatypes = new ArrayList<>(columnsToAdd.size()); for (ColumnDescription column : columnsToAdd) { String dataType = getSQLForDataType(column.getDataType()); StringBuilder sb = new StringBuilder() - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(column.getColumnName()) - .append(quoteColumnNames ? getColumnQuoteString() : "") .append(" ") .append(dataType); columnsAndDatatypes.add(sb.toString()); @@ -164,9 +160,7 @@ public String getAlterTableStatement(final String tableName, final List columns = Arrays.asList( - new ColumnDescription("col1", Types.INTEGER, true, 4, false), - new ColumnDescription("col2", Types.VARCHAR, false, 2000, true) + new ColumnDescription("\"col1\"", Types.INTEGER, true, 4, false), + new ColumnDescription("\"col2\"", Types.VARCHAR, false, 2000, true) ); NameNormalizer normalizer = NameNormalizerFactory.getNormalizer(TranslationStrategy.REMOVE_UNDERSCORE, null); - TableSchema tableSchema = new TableSchema("USERS", null, "TEST_TABLE", columns, - true, normalizer, Collections.singleton("COL1"), db.getColumnQuoteString()); + TableSchema tableSchema = new TableSchema("\"USERS\"", null, "\"TEST_TABLE\"", columns, + true, normalizer, Collections.singleton("\"COL1\""), "\""); String expectedStatement = "DECLARE\n\tsql_stmt long;\nBEGIN\n\tsql_stmt:='CREATE TABLE " // Strings are returned as VARCHAR2(2000) regardless of reported size and that VARCHAR2 is not in java.sql.Types + "\"USERS\".\"TEST_TABLE\" (\"col1\" INTEGER NOT NULL, \"col2\" VARCHAR2(2000))';" + "\nEXECUTE IMMEDIATE sql_stmt;\nEXCEPTION\n\tWHEN OTHERS THEN\n\t\tIF SQLCODE = -955 THEN\n\t\t\t" + "NULL;\n\t\tELSE\n\t\t\tRAISE;\n\t\tEND IF;\nEND;"; - String actualStatement = db.getCreateTableStatement(tableSchema, true, true); + String actualStatement = db.getCreateTableStatement(tableSchema); assertEquals(expectedStatement, actualStatement); } diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/db/impl/TestOracleDatabaseAdapter.java b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/db/impl/TestOracleDatabaseAdapter.java index a2e8dd13d259..8926d30d98e2 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/db/impl/TestOracleDatabaseAdapter.java +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/db/impl/TestOracleDatabaseAdapter.java @@ -117,19 +117,19 @@ public void testPagingQueryUsingColumnValuesForPartitioning() { public void testGetCreateTableStatement() { assertTrue(db.supportsCreateTableIfNotExists()); final List columns = Arrays.asList( - new ColumnDescription("col1", Types.INTEGER, true, 4, false), - new ColumnDescription("col2", Types.VARCHAR, false, 2000, true) + new ColumnDescription("\"col1\"", Types.INTEGER, true, 4, false), + new ColumnDescription("\"col2\"", Types.VARCHAR, false, 2000, true) ); NameNormalizer normalizer = NameNormalizerFactory.getNormalizer(TranslationStrategy.REMOVE_UNDERSCORE, null); - TableSchema tableSchema = new TableSchema("USERS", null, "TEST_TABLE", columns, - true, normalizer, Collections.singleton("COL1"), db.getColumnQuoteString()); + TableSchema tableSchema = new TableSchema("\"USERS\"", null, "\"TEST_TABLE\"", columns, + true, normalizer, Collections.singleton("\"COL1\""), "`"); String expectedStatement = "DECLARE\n\tsql_stmt long;\nBEGIN\n\tsql_stmt:='CREATE TABLE " // Strings are returned as VARCHAR2(2000) regardless of reported size and that VARCHAR2 is not in java.sql.Types + "\"USERS\".\"TEST_TABLE\" (\"col1\" INTEGER NOT NULL, \"col2\" VARCHAR2(2000))';" + "\nEXECUTE IMMEDIATE sql_stmt;\nEXCEPTION\n\tWHEN OTHERS THEN\n\t\tIF SQLCODE = -955 THEN\n\t\t\t" + "NULL;\n\t\tELSE\n\t\t\tRAISE;\n\t\tEND IF;\nEND;"; - String actualStatement = db.getCreateTableStatement(tableSchema, true, true); + String actualStatement = db.getCreateTableStatement(tableSchema); assertEquals(expectedStatement, actualStatement); } } \ No newline at end of file