/** * Initialize any platform-specific operators. */ @Override protected void initializePlatformOperators() { super.initializePlatformOperators(); addOperator(logOperator()); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Atan2, "ATAN2")); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Concat, "CONCAT")); addOperator(toNumberOperator()); addOperator(toCharOperator()); addOperator(toDateOperator()); addOperator(dateToStringOperator()); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Nvl, "IFNULL")); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Trunc, "TRUNCATE")); addOperator(leftTrim2()); addOperator(rightTrim2()); }
/** * Used for stored function calls. */ @Override public String getFunctionCallHeader() { return "? " + getAssignmentString() + getProcedureCallHeader(); // different order - CALL clause ^^^ comes AFTER assignment operator }
/** * INTERNAL: * Writes MySQL specific SQL for accessing temp tables for update-all queries. */ @Override public void writeUpdateOriginalFromTempTableSql(Writer writer, DatabaseTable table, Collection pkFields, Collection assignedFields) throws IOException { writer.write("UPDATE "); String tableName = table.getQualifiedNameDelimited(this); writer.write(tableName); writer.write(", "); String tempTableName = getTempTableForTable(table).getQualifiedNameDelimited(this); writer.write(tempTableName); writeAutoAssignmentSetClause(writer, tableName, tempTableName, assignedFields, this); writeAutoJoinWhereClause(writer, tableName, tempTableName, pkFields, this); }
/** * INTERNAL: * Writes MySQL specific SQL for accessing temp tables for delete-all queries. */ public void writeDeleteFromTargetTableUsingTempTableSql(Writer writer, DatabaseTable table, DatabaseTable targetTable, Collection pkFields, Collection targetPkFields) throws IOException { writer.write("DELETE FROM "); String targetTableName = targetTable.getQualifiedNameDelimited(this); writer.write(targetTableName); writer.write(" USING "); writer.write(targetTableName); writer.write(", "); String tempTableName = getTempTableForTable(table).getQualifiedNameDelimited(this); writer.write(tempTableName); writeJoinWhereClause(writer, targetTableName, tempTableName, targetPkFields, pkFields, this); }
/** * PUBLIC: * Set the database platform to be MySQL. */ public void useMySQL() { if (getPlatform().isMySQL()) { return; } DatabasePlatform newPlatform = new MySQLPlatform(); getPlatform().copyInto(newPlatform); setPlatform(newPlatform); }
@Override public void printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement) { int max = 0; int firstRow = 0; if (statement.getQuery() != null) { max = statement.getQuery().getMaxRows(); firstRow = statement.getQuery().getFirstResult(); } if (max <= 0 || !(this.shouldUseRownumFiltering())) { super.printSQLSelectStatement(call, printer, statement); return; } statement.setUseUniqueFieldAliases(true); call.setFields(statement.printSQL(printer)); printer.printString(LIMIT); printer.printParameter(DatabaseCall.FIRSTRESULT_FIELD); printer.printString(", "); printer.printParameter(DatabaseCall.MAXROW_FIELD); call.setIgnoreFirstRowMaxResultsSettings(true); }
/** * INTERNAL: * Writes MySQL specific SQL for accessing temp tables for update-all queries. */ @Override public void writeUpdateOriginalFromTempTableSql(Writer writer, DatabaseTable table, Collection pkFields, Collection assignedFields) throws IOException { writer.write("UPDATE "); String tableName = table.getQualifiedNameDelimited(this); writer.write(tableName); writer.write(", "); String tempTableName = getTempTableForTable(table).getQualifiedNameDelimited(this); writer.write(tempTableName); writeAutoAssignmentSetClause(writer, tableName, tempTableName, assignedFields, this); writeAutoJoinWhereClause(writer, tableName, tempTableName, pkFields, this); }
/** * INTERNAL: * Writes MySQL specific SQL for accessing temp tables for delete-all queries. */ @Override public void writeDeleteFromTargetTableUsingTempTableSql(Writer writer, DatabaseTable table, DatabaseTable targetTable, Collection pkFields, Collection targetPkFields, DatasourcePlatform platform) throws IOException { writer.write("DELETE FROM "); String targetTableName = targetTable.getQualifiedNameDelimited(this); writer.write(targetTableName); writer.write(" USING "); writer.write(targetTableName); writer.write(", "); String tempTableName = getTempTableForTable(table).getQualifiedNameDelimited(this); writer.write(tempTableName); writeJoinWhereClause(writer, targetTableName, tempTableName, targetPkFields, pkFields, this); }
/** * PUBLIC: * Set the database platform to be MySQL. */ public void useMySQL() { if (getPlatform().isMySQL()) { return; } DatabasePlatform newPlatform = new MySQLPlatform(); getPlatform().copyInto(newPlatform); setPlatform(newPlatform); }
@Override public void printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement) { int max = 0; if (statement.getQuery() != null) { max = statement.getQuery().getMaxRows(); } if (max <= 0 || !(this.shouldUseRownumFiltering())) { super.printSQLSelectStatement(call, printer, statement); statement.appendForUpdateClause(printer); return; } statement.setUseUniqueFieldAliases(true); call.setFields(statement.printSQL(printer)); printer.printString(LIMIT); printer.printParameter(DatabaseCall.FIRSTRESULT_FIELD); printer.printString(", "); printer.printParameter(DatabaseCall.MAXROW_FIELD); statement.appendForUpdateClause(printer); call.setIgnoreFirstRowSetting(true); call.setIgnoreMaxResultsSetting(true); }
/** * Initialize any platform-specific operators. */ @Override protected void initializePlatformOperators() { super.initializePlatformOperators(); addOperator(logOperator()); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Atan2, "ATAN2")); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Concat, "CONCAT")); addOperator(toNumberOperator()); addOperator(toCharOperator()); addOperator(toDateOperator()); addOperator(dateToStringOperator()); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Nvl, "IFNULL")); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Trunc, "TRUNCATE")); addOperator(leftTrim2()); addOperator(rightTrim2()); }
/** * INTERNAL: * Writes MySQL specific SQL for accessing temp tables for update-all queries. */ public void writeUpdateOriginalFromTempTableSql(Writer writer, DatabaseTable table, Collection pkFields, Collection assignedFields) throws IOException { writer.write("UPDATE "); String tableName = table.getQualifiedNameDelimited(this); writer.write(tableName); writer.write(", "); String tempTableName = getTempTableForTable(table).getQualifiedNameDelimited(this); writer.write(tempTableName); writeAutoAssignmentSetClause(writer, tableName, tempTableName, assignedFields, this); writeAutoJoinWhereClause(writer, tableName, tempTableName, pkFields, this); }
/** * Used for stored function calls. */ @Override public String getFunctionCallHeader() { return "? " + getAssignmentString() + getProcedureCallHeader(); // different order - CALL clause ^^^ comes AFTER assignment operator }
/** * INTERNAL: * Writes MySQL specific SQL for accessing temp tables for delete-all queries. */ @Override public void writeDeleteFromTargetTableUsingTempTableSql(Writer writer, DatabaseTable table, DatabaseTable targetTable, Collection pkFields, Collection targetPkFields, DatasourcePlatform platform) throws IOException { writer.write("DELETE FROM "); String targetTableName = targetTable.getQualifiedNameDelimited(this); writer.write(targetTableName); writer.write(" USING "); writer.write(targetTableName); writer.write(", "); String tempTableName = getTempTableForTable(table).getQualifiedNameDelimited(this); writer.write(tempTableName); writeJoinWhereClause(writer, targetTableName, tempTableName, targetPkFields, pkFields, this); }
/** * PUBLIC: * Set the database platform to be MySQL. */ public void useMySQL() { if (getPlatform().isMySQL()) { return; } DatabasePlatform newPlatform = new MySQLPlatform(); getPlatform().copyInto(newPlatform); setPlatform(newPlatform); }
@Override public void printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement) { int max = 0; int firstRow = 0; if (statement.getQuery() != null) { max = statement.getQuery().getMaxRows(); firstRow = statement.getQuery().getFirstResult(); } if (max <= 0 || !(this.shouldUseRownumFiltering())) { super.printSQLSelectStatement(call, printer, statement); statement.appendForUpdateClause(printer); return; } statement.setUseUniqueFieldAliases(true); call.setFields(statement.printSQL(printer)); printer.printString(LIMIT); printer.printParameter(DatabaseCall.FIRSTRESULT_FIELD); printer.printString(", "); printer.printParameter(DatabaseCall.MAXROW_FIELD); statement.appendForUpdateClause(printer); call.setIgnoreFirstRowSetting(true); call.setIgnoreMaxResultsSetting(true); }
/** * Initialize any platform-specific operators. */ protected void initializePlatformOperators() { super.initializePlatformOperators(); addOperator(logOperator()); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Atan2, "ATAN2")); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Concat, "CONCAT")); addOperator(toNumberOperator()); addOperator(toCharOperator()); addOperator(toDateOperator()); addOperator(dateToStringOperator()); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Nvl, "IFNULL")); addOperator(ExpressionOperator.simpleTwoArgumentFunction(ExpressionOperator.Trunc, "TRUNCATE")); addOperator(leftTrim2()); addOperator(rightTrim2()); }
/** * Used for stored function calls. */ @Override public String getFunctionCallHeader() { return "? " + getAssignmentString() + getProcedureCallHeader(); // different order - CALL clause ^^^ comes AFTER assignment operator }