@Test public void testBindNChar() throws SQLException { JDBCExecutionFactory jef = new JDBCExecutionFactory() { public boolean useUnicodePrefix() {return true;} }; PreparedStatement ps = Mockito.mock(PreparedStatement.class); jef.bindValue(ps, "Hello\u0128World", TypeFacility.RUNTIME_TYPES.STRING, 1); Mockito.verify(ps).setObject(1, "Hello\u0128World", Types.NVARCHAR); }
public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException { int type = TypeFacility.getSQLTypeFromRuntimeType(paramType); if (param == null) { if (type == Types.JAVA_OBJECT) { stmt.setNull(i, Types.OTHER); } else { stmt.setNull(i, type); } return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.DATE)) { stmt.setDate(i,(java.sql.Date)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIME)) { stmt.setTime(i,(java.sql.Time)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIMESTAMP)) { stmt.setTimestamp(i,(java.sql.Timestamp)param, getDatabaseCalendar()); return; } if (TypeFacility.RUNTIME_TYPES.BIG_DECIMAL.equals(paramType)) { stmt.setBigDecimal(i, (BigDecimal)param); return; } if (paramType == TypeFacility.RUNTIME_TYPES.INTEGER && param instanceof AbstractGeospatialType) { stmt.setInt(i, ((AbstractGeospatialType)param).getSrid()); return; } if (useStreamsForLobs()) { if (param instanceof Blob) { Blob blob = (Blob)param; long length = blob.length(); if (length <= Integer.MAX_VALUE) { stmt.setBinaryStream(i, blob.getBinaryStream(), (int)length); } else { stmt.setBinaryStream(i, blob.getBinaryStream(), length); } return; } if (param instanceof Clob) { Clob clob = (Clob)param; long length = clob.length(); if (length <= Integer.MAX_VALUE) { stmt.setCharacterStream(i, clob.getCharacterStream(), (int)clob.length()); } else { stmt.setCharacterStream(i, clob.getCharacterStream(), length); } return; } } if (TypeFacility.RUNTIME_TYPES.BIG_INTEGER.equals(paramType)) { param = new BigDecimal((BigInteger)param); } else if (TypeFacility.RUNTIME_TYPES.FLOAT.equals(paramType)) { param = new Double(((Float)param).doubleValue()); } else if (TypeFacility.RUNTIME_TYPES.CHAR.equals(paramType)) { param = ((Character)param).toString(); } else if (paramType.equals(TypeFacility.RUNTIME_TYPES.VARBINARY)) { param = ((BinaryType)param).getBytesDirect(); } if (type != Types.JAVA_OBJECT) { if (this.removePushdownCharacters != null && param instanceof String) { param = this.removePushdownCharacters.matcher((String)param).replaceAll(""); } if (useNBindingType()) { if (type == Types.VARCHAR) { if (isNonAscii(param.toString())) { type = Types.NVARCHAR; } } else if (type == Types.CLOB) { type = Types.NCLOB; } } stmt.setObject(i, param, type); } else { stmt.setObject(i, param); } }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException { int type = TypeFacility.getSQLTypeFromRuntimeType(paramType); if (param == null) { if (type == Types.JAVA_OBJECT) { stmt.setNull(i, Types.OTHER); } else { stmt.setNull(i, type); } return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.DATE)) { stmt.setDate(i,(java.sql.Date)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIME)) { stmt.setTime(i,(java.sql.Time)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIMESTAMP)) { stmt.setTimestamp(i,(java.sql.Timestamp)param, getDatabaseCalendar()); return; } if (TypeFacility.RUNTIME_TYPES.BIG_DECIMAL.equals(paramType)) { stmt.setBigDecimal(i, (BigDecimal)param); return; } if (paramType == TypeFacility.RUNTIME_TYPES.INTEGER && param instanceof AbstractGeospatialType) { stmt.setInt(i, ((AbstractGeospatialType)param).getSrid()); return; } if (useStreamsForLobs()) { if (param instanceof Blob) { Blob blob = (Blob)param; long length = blob.length(); if (length <= Integer.MAX_VALUE) { stmt.setBinaryStream(i, blob.getBinaryStream(), (int)length); } else { stmt.setBinaryStream(i, blob.getBinaryStream(), length); } return; } if (param instanceof Clob) { Clob clob = (Clob)param; long length = clob.length(); if (length <= Integer.MAX_VALUE) { stmt.setCharacterStream(i, clob.getCharacterStream(), (int)clob.length()); } else { stmt.setCharacterStream(i, clob.getCharacterStream(), length); } return; } } if (TypeFacility.RUNTIME_TYPES.BIG_INTEGER.equals(paramType)) { param = new BigDecimal((BigInteger)param); } else if (TypeFacility.RUNTIME_TYPES.FLOAT.equals(paramType)) { param = new Double(((Float)param).doubleValue()); } else if (TypeFacility.RUNTIME_TYPES.CHAR.equals(paramType)) { param = ((Character)param).toString(); } else if (paramType.equals(TypeFacility.RUNTIME_TYPES.VARBINARY)) { param = ((BinaryType)param).getBytesDirect(); } if (type != Types.JAVA_OBJECT) { if (this.removePushdownCharacters != null && param instanceof String) { param = this.removePushdownCharacters.matcher((String)param).replaceAll(""); } if (useNBindingType()) { if (type == Types.VARCHAR) { if (isNonAscii(param.toString())) { type = Types.NVARCHAR; } } else if (type == Types.CLOB) { type = Types.NCLOB; } } stmt.setObject(i, param, type); } else { stmt.setObject(i, param); } } }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException { int type = TypeFacility.getSQLTypeFromRuntimeType(paramType); if (param == null) { if (type == Types.JAVA_OBJECT) { stmt.setNull(i, Types.OTHER); } else { stmt.setNull(i, type); } return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.DATE)) { stmt.setDate(i,(java.sql.Date)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIME)) { stmt.setTime(i,(java.sql.Time)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIMESTAMP)) { stmt.setTimestamp(i,(java.sql.Timestamp)param, getDatabaseCalendar()); return; } if (TypeFacility.RUNTIME_TYPES.BIG_DECIMAL.equals(paramType)) { stmt.setBigDecimal(i, (BigDecimal)param); return; } if (paramType == TypeFacility.RUNTIME_TYPES.INTEGER && param instanceof AbstractGeospatialType) { stmt.setInt(i, ((AbstractGeospatialType)param).getSrid()); return; } if (useStreamsForLobs()) { if (param instanceof Blob) { Blob blob = (Blob)param; long length = blob.length(); if (length <= Integer.MAX_VALUE) { stmt.setBinaryStream(i, blob.getBinaryStream(), (int)length); } else { stmt.setBinaryStream(i, blob.getBinaryStream(), length); } return; } if (param instanceof Clob) { Clob clob = (Clob)param; long length = clob.length(); if (length <= Integer.MAX_VALUE) { stmt.setCharacterStream(i, clob.getCharacterStream(), (int)clob.length()); } else { stmt.setCharacterStream(i, clob.getCharacterStream(), length); } return; } } if (TypeFacility.RUNTIME_TYPES.BIG_INTEGER.equals(paramType)) { param = new BigDecimal((BigInteger)param); } else if (TypeFacility.RUNTIME_TYPES.FLOAT.equals(paramType)) { param = new Double(((Float)param).doubleValue()); } else if (TypeFacility.RUNTIME_TYPES.CHAR.equals(paramType)) { param = ((Character)param).toString(); } else if (paramType.equals(TypeFacility.RUNTIME_TYPES.VARBINARY)) { param = ((BinaryType)param).getBytesDirect(); } if (type != Types.JAVA_OBJECT) { if (this.removePushdownCharacters != null && param instanceof String) { param = this.removePushdownCharacters.matcher((String)param).replaceAll(""); } if (useNBindingType()) { if (type == Types.VARCHAR) { if (isNonAscii(param.toString())) { type = Types.NVARCHAR; } } else if (type == Types.CLOB) { type = Types.NCLOB; } } stmt.setObject(i, param, type); } else { stmt.setObject(i, param); } } JDBCExecutionFactory(); }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException { int type = TypeFacility.getSQLTypeFromRuntimeType(paramType); if (param == null) { if (type == Types.JAVA_OBJECT) { stmt.setNull(i, Types.OTHER); } else { stmt.setNull(i, type); } return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.DATE)) { stmt.setDate(i,(java.sql.Date)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIME)) { stmt.setTime(i,(java.sql.Time)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIMESTAMP)) { stmt.setTimestamp(i,(java.sql.Timestamp)param, getDatabaseCalendar()); return; } if (TypeFacility.RUNTIME_TYPES.BIG_DECIMAL.equals(paramType)) { stmt.setBigDecimal(i, (BigDecimal)param); return; } if (paramType == TypeFacility.RUNTIME_TYPES.INTEGER && param instanceof AbstractGeospatialType) { stmt.setInt(i, ((AbstractGeospatialType)param).getSrid()); return; } if (useStreamsForLobs()) { if (param instanceof Blob) { Blob blob = (Blob)param; long length = blob.length(); if (length <= Integer.MAX_VALUE) { stmt.setBinaryStream(i, blob.getBinaryStream(), (int)length); } else { stmt.setBinaryStream(i, blob.getBinaryStream(), length); } return; } if (param instanceof Clob) { Clob clob = (Clob)param; long length = clob.length(); if (length <= Integer.MAX_VALUE) { stmt.setCharacterStream(i, clob.getCharacterStream(), (int)clob.length()); } else { stmt.setCharacterStream(i, clob.getCharacterStream(), length); } return; } } if (TypeFacility.RUNTIME_TYPES.BIG_INTEGER.equals(paramType)) { param = new BigDecimal((BigInteger)param); } else if (TypeFacility.RUNTIME_TYPES.FLOAT.equals(paramType)) { param = new Double(((Float)param).doubleValue()); } else if (TypeFacility.RUNTIME_TYPES.CHAR.equals(paramType)) { param = ((Character)param).toString(); } else if (paramType.equals(TypeFacility.RUNTIME_TYPES.VARBINARY)) { param = ((BinaryType)param).getBytesDirect(); } if (type != Types.JAVA_OBJECT) { if (this.removePushdownCharacters != null && param instanceof String) { param = this.removePushdownCharacters.matcher((String)param).replaceAll(""); } if (useNBindingType()) { if (type == Types.VARCHAR) { if (isNonAscii(param.toString())) { type = Types.NVARCHAR; } } else if (type == Types.CLOB) { type = Types.NCLOB; } } stmt.setObject(i, param, type); } else { stmt.setObject(i, param); } } JDBCExecutionFactory(); @Override void start(); @TranslatorProperty(display="Database Version", description= "Database Version") String getDatabaseVersion(); void setDatabaseVersion(String version); void setDatabaseVersion(Version version); @TranslatorProperty(display="Use Bind Variables", description="Use prepared statements and bind variables",advanced=true) boolean useBindVariables(); void setUseBindVariables(boolean useBindVariables); @TranslatorProperty(display="Database time zone", description="Time zone of the database, if different than Integration Server", advanced=true) String getDatabaseTimeZone(); void setDatabaseTimeZone(String databaseTimeZone); @TranslatorProperty(display="Trim string flag", description="Right Trim fixed character types returned as Strings - note that the native type must be char or nchar and the source must support the rtrim function.",advanced=true) boolean isTrimStrings(); void setTrimStrings(boolean trimStrings); @TranslatorProperty(display="Use informational comments in Source Queries", description="This will embed a /*comment*/ leading comment with session/request id in source SQL query for informational purposes", advanced=true) boolean useCommentsInSourceQuery(); void setUseCommentsInSourceQuery(boolean useCommentsInSourceQuery); @Override boolean isSourceRequired(); @Override boolean isSourceRequiredForCapabilities(); @Override void initCapabilities(Connection connection); @Override ResultSetExecution createResultSetExecution(QueryExpression command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override ProcedureExecution createDirectExecution(List<Argument> arguments, Command command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override ProcedureExecution createProcedureExecution(Call command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override JDBCUpdateExecution createUpdateExecution(Command command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override Connection getConnection(DataSource ds); @Override void closeConnection(Connection connection, DataSource factory); @Override void getMetadata(MetadataFactory metadataFactory, Connection conn); @Override MetadataProcessor<Connection> getMetadataProcessor(); @Override List<String> getSupportedFunctions(); List<String> getDefaultSupportedFunctions(); @Override boolean supportsGroupBy(); @Override boolean supportsAggregatesAvg(); @Override boolean supportsAggregatesCount(); @Override boolean supportsAggregatesCountStar(); @Override boolean supportsAggregatesDistinct(); @Override boolean supportsAggregatesMax(); @Override boolean supportsAggregatesMin(); @Override boolean supportsAggregatesSum(); @Override boolean supportsAliasedTable(); @Override boolean supportsCompareCriteriaEquals(); @Override boolean supportsCorrelatedSubqueries(); @Override boolean supportsExistsCriteria(); @Override boolean supportsInCriteria(); @Override boolean supportsInCriteriaSubquery(); @Override boolean supportsIsNullCriteria(); @Override boolean supportsLikeCriteria(); @Override boolean supportsLikeCriteriaEscapeCharacter(); @Override boolean supportsNotCriteria(); @Override boolean supportsOrCriteria(); @Override boolean supportsOrderByUnrelated(); @Override boolean supportsQuantifiedCompareCriteriaAll(); @Override boolean supportsScalarSubqueries(); @Override boolean supportsSearchedCaseExpressions(); @Override boolean supportsSelfJoins(); @Override boolean supportsInlineViews(); @Override boolean supportsQuantifiedCompareCriteriaSome(); @Override boolean supportsSetQueryOrderBy(); @Override boolean supportsUnions(); @Override boolean supportsBulkUpdate(); @Override boolean supportsBatchedUpdates(); @Override boolean supportsCompareCriteriaOrdered(); @Override boolean supportsHaving(); @Override boolean supportsSelectExpression(); @Override boolean supportsInsertWithQueryExpression(); @TranslatorProperty(display="Max Prepared Insert Batch Size", description="The max size of a prepared insert batch. Default 2048.", advanced=true) int getMaxPreparedInsertBatchSize(); void setMaxPreparedInsertBatchSize(int maxInsertBatchSize); Calendar getDatabaseCalendar(); List<?> translate(LanguageObject obj, ExecutionContext context); Expression translateGeometrySelect(Expression expr); Expression translateGeographySelect(Expression expr); List<?> translateGeometryLiteral(Literal l); List<?> translateGeographyLiteral(Literal l); List<?> translateGeometryParameter(Parameter p); List<?> translateGeographyParameter(Parameter p); Object retrieveGeometryValue(ResultSet results, int paramIndex); Object retrieveGeographyValue(ResultSet results, int paramIndex); GeometryType retrieveGeometryValue(CallableStatement results, int parameterIndex); GeographyType retrieveGeographyValue(CallableStatement results, int parameterIndex); List<?> translateCommand(Command command, ExecutionContext context); List<?> translateLimit(Limit limit, ExecutionContext context); Map<String, FunctionModifier> getFunctionModifiers(); void registerFunctionModifier(String name, FunctionModifier modifier); String translateLiteralBoolean(Boolean booleanValue); String translateLiteralDate(java.sql.Date dateValue); String translateLiteralTime(Time timeValue); String translateLiteralTimestamp(Timestamp timestampValue); String formatDateValue(java.util.Date dateObject, boolean useTimezone); String formatDateValue(java.util.Date dateObject); String translateLiteralBinaryType(BinaryType obj); boolean addSourceComment(); boolean useAsInGroupAlias(); boolean usePreparedStatements(); boolean useParensForSetQueries(); boolean hasTimeType(); String getSetOperationString(SetQuery.Operation operation); String getSourceComment(ExecutionContext context, Command command); String replaceElementName(String group, String element); int getTimestampNanoPrecision(); ResultSet executeStoredProcedure(CallableStatement statement, List<Argument> preparedValues, Class<?> returnType); void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i); boolean useStreamsForLobs(); Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType); Object retrieveValue(CallableStatement results, int parameterIndex, Class<?> expectedType); void obtainedConnection(Connection connection); SQLConversionVisitor getSQLConversionVisitor(); boolean useParensForJoins(); @Override NullOrder getDefaultNullOrder(); boolean useSelectLimit(); String getLikeRegexString(); void setFetchSize(Command command, ExecutionContext context, Statement statement, int fetchSize); boolean supportsGeneratedKeys(); @TranslatorProperty(display="Struct retrieval", description="Struct retrieval mode (OBJECT, COPY, ARRAY)",advanced=true) StructRetrieval getStructRetrieval(); void setStructRetrieval(StructRetrieval structRetrieval); String createTempTable(String prefix, List<ColumnReference> cols, ExecutionContext context, Connection connection); String getCreateTempTableSQL(String name, List<ColumnReference> cols, boolean transactional); String getTemporaryTableName(String prefix); String getCreateTemporaryTablePostfix(boolean inTransaction); String getCreateTemporaryTableString(boolean inTransaction); SQLDialect getDialect(); String getHibernateDialectClassName(); @Override boolean supportsDependentJoins(); @Override boolean supportsFullDependentJoins(); boolean tempTableRequiresTransaction(); void loadedTemporaryTable(String tableName,
            ExecutionContext context, Connection connection); @TranslatorProperty(display="Enable Dependent Joins", description="Enable Dependent Join Pushdown",advanced=true) boolean isEnableDependentJoins(); void setEnableDependentJoins(boolean enableDependentJoins); boolean useWithRollup(); @TranslatorProperty(display="Comment Format", description= "Comment format string used with useCommentsInSourceQuery") String getCommentFormat(); void setCommentFormat(String commentFormat); boolean useScientificNotation(); boolean useUnicodePrefix(); boolean useNBindingType(); boolean isExtendedAscii(); void intializeConnectionAfterCancel(Connection c); @Override @TranslatorProperty(display="Use Bindings For Dependent Join", description= "If PreparedStatement bindings should be used for dependent join values.") boolean useBindingsForDependentJoin(); void setUseBindingsForDependentJoin(
            boolean useBindingsForDependentJoin); boolean useColumnNamesForGeneratedKeys(); String getLateralKeyword(); @TranslatorProperty(display="Remove Pushdown Characters", description="A case-sensitive regular expression of character strings to remove from string values that are pushed down.") String getRemovePushdownCharacters(); void setRemovePushdownCharacters(String removePushdownCharacters); boolean isDefaultTimeZone(); @Override boolean supportsProcedureParameterExpression(); }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException { int type = TypeFacility.getSQLTypeFromRuntimeType(paramType); if (param == null) { if (type == Types.JAVA_OBJECT) { stmt.setNull(i, Types.OTHER); } else { stmt.setNull(i, type); } return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.DATE)) { stmt.setDate(i,(java.sql.Date)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIME)) { stmt.setTime(i,(java.sql.Time)param, getDatabaseCalendar()); return; } if (paramType.equals(TypeFacility.RUNTIME_TYPES.TIMESTAMP)) { stmt.setTimestamp(i,(java.sql.Timestamp)param, getDatabaseCalendar()); return; } if (TypeFacility.RUNTIME_TYPES.BIG_DECIMAL.equals(paramType)) { stmt.setBigDecimal(i, (BigDecimal)param); return; } if (paramType == TypeFacility.RUNTIME_TYPES.INTEGER && param instanceof AbstractGeospatialType) { stmt.setInt(i, ((AbstractGeospatialType)param).getSrid()); return; } if (useStreamsForLobs()) { if (param instanceof Blob) { Blob blob = (Blob)param; long length = blob.length(); if (length <= Integer.MAX_VALUE) { stmt.setBinaryStream(i, blob.getBinaryStream(), (int)length); } else { stmt.setBinaryStream(i, blob.getBinaryStream(), length); } return; } if (param instanceof Clob) { Clob clob = (Clob)param; long length = clob.length(); if (length <= Integer.MAX_VALUE) { stmt.setCharacterStream(i, clob.getCharacterStream(), (int)clob.length()); } else { stmt.setCharacterStream(i, clob.getCharacterStream(), length); } return; } } if (TypeFacility.RUNTIME_TYPES.BIG_INTEGER.equals(paramType)) { param = new BigDecimal((BigInteger)param); } else if (TypeFacility.RUNTIME_TYPES.FLOAT.equals(paramType)) { param = new Double(((Float)param).doubleValue()); } else if (TypeFacility.RUNTIME_TYPES.CHAR.equals(paramType)) { param = ((Character)param).toString(); } else if (paramType.equals(TypeFacility.RUNTIME_TYPES.VARBINARY)) { param = ((BinaryType)param).getBytesDirect(); } if (type != Types.JAVA_OBJECT) { if (this.removePushdownCharacters != null && param instanceof String) { param = this.removePushdownCharacters.matcher((String)param).replaceAll(""); } if (useNBindingType()) { if (type == Types.VARCHAR) { if (isNonAscii(param.toString())) { type = Types.NVARCHAR; } } else if (type == Types.CLOB) { type = Types.NCLOB; } } stmt.setObject(i, param, type); } else { stmt.setObject(i, param); } } JDBCExecutionFactory(); @Override void start(); @TranslatorProperty(display="Database Version", description= "Database Version") String getDatabaseVersion(); void setDatabaseVersion(String version); void setDatabaseVersion(Version version); @TranslatorProperty(display="Use Bind Variables", description="Use prepared statements and bind variables",advanced=true) boolean useBindVariables(); void setUseBindVariables(boolean useBindVariables); @TranslatorProperty(display="Database time zone", description="Time zone of the database, if different than Integration Server", advanced=true) String getDatabaseTimeZone(); void setDatabaseTimeZone(String databaseTimeZone); @TranslatorProperty(display="Trim string flag", description="Right Trim fixed character types returned as Strings - note that the native type must be char or nchar and the source must support the rtrim function.",advanced=true) boolean isTrimStrings(); void setTrimStrings(boolean trimStrings); @TranslatorProperty(display="Use informational comments in Source Queries", description="This will embed a /*comment*/ leading comment with session/request id in source SQL query for informational purposes", advanced=true) boolean useCommentsInSourceQuery(); void setUseCommentsInSourceQuery(boolean useCommentsInSourceQuery); @Override boolean isSourceRequired(); @Override boolean isSourceRequiredForCapabilities(); @Override void initCapabilities(Connection connection); @Override ResultSetExecution createResultSetExecution(QueryExpression command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override ProcedureExecution createDirectExecution(List<Argument> arguments, Command command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override ProcedureExecution createProcedureExecution(Call command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override JDBCUpdateExecution createUpdateExecution(Command command, ExecutionContext executionContext, RuntimeMetadata metadata, Connection conn); @Override Connection getConnection(DataSource ds); @Override void closeConnection(Connection connection, DataSource factory); @Override void getMetadata(MetadataFactory metadataFactory, Connection conn); @Override MetadataProcessor<Connection> getMetadataProcessor(); @Override List<String> getSupportedFunctions(); List<String> getDefaultSupportedFunctions(); @Override boolean supportsGroupBy(); @Override boolean supportsAggregatesAvg(); @Override boolean supportsAggregatesCount(); @Override boolean supportsAggregatesCountStar(); @Override boolean supportsAggregatesDistinct(); @Override boolean supportsAggregatesMax(); @Override boolean supportsAggregatesMin(); @Override boolean supportsAggregatesSum(); @Override boolean supportsAliasedTable(); @Override boolean supportsCompareCriteriaEquals(); @Override boolean supportsCorrelatedSubqueries(); @Override boolean supportsExistsCriteria(); @Override boolean supportsInCriteria(); @Override boolean supportsInCriteriaSubquery(); @Override boolean supportsIsNullCriteria(); @Override boolean supportsLikeCriteria(); @Override boolean supportsLikeCriteriaEscapeCharacter(); @Override boolean supportsNotCriteria(); @Override boolean supportsOrCriteria(); @Override boolean supportsOrderByUnrelated(); @Override boolean supportsQuantifiedCompareCriteriaAll(); @Override boolean supportsScalarSubqueries(); @Override boolean supportsSearchedCaseExpressions(); @Override boolean supportsSelfJoins(); @Override boolean supportsInlineViews(); @Override boolean supportsQuantifiedCompareCriteriaSome(); @Override boolean supportsSetQueryOrderBy(); @Override boolean supportsUnions(); @Override boolean supportsBulkUpdate(); @Override boolean supportsBatchedUpdates(); @Override boolean supportsCompareCriteriaOrdered(); @Override boolean supportsHaving(); @Override boolean supportsSelectExpression(); @Override boolean supportsInsertWithQueryExpression(); @TranslatorProperty(display="Max Prepared Insert Batch Size", description="The max size of a prepared insert batch. Default 2048.", advanced=true) int getMaxPreparedInsertBatchSize(); void setMaxPreparedInsertBatchSize(int maxInsertBatchSize); Calendar getDatabaseCalendar(); List<?> translate(LanguageObject obj, ExecutionContext context); Expression translateGeometrySelect(Expression expr); Expression translateGeographySelect(Expression expr); List<?> translateGeometryLiteral(Literal l); List<?> translateGeographyLiteral(Literal l); List<?> translateGeometryParameter(Parameter p); List<?> translateGeographyParameter(Parameter p); Object retrieveGeometryValue(ResultSet results, int paramIndex); Object retrieveGeographyValue(ResultSet results, int paramIndex); GeometryType retrieveGeometryValue(CallableStatement results, int parameterIndex); GeographyType retrieveGeographyValue(CallableStatement results, int parameterIndex); List<?> translateCommand(Command command, ExecutionContext context); List<?> translateLimit(Limit limit, ExecutionContext context); Map<String, FunctionModifier> getFunctionModifiers(); void registerFunctionModifier(String name, FunctionModifier modifier); String translateLiteralBoolean(Boolean booleanValue); String translateLiteralDate(java.sql.Date dateValue); String translateLiteralTime(Time timeValue); String translateLiteralTimestamp(Timestamp timestampValue); String formatDateValue(java.util.Date dateObject, boolean useTimezone); String formatDateValue(java.util.Date dateObject); String translateLiteralBinaryType(BinaryType obj); boolean addSourceComment(); boolean useAsInGroupAlias(); boolean usePreparedStatements(); boolean useParensForSetQueries(); boolean hasTimeType(); String getSetOperationString(SetQuery.Operation operation); String getSourceComment(ExecutionContext context, Command command); String replaceElementName(String group, String element); int getTimestampNanoPrecision(); ResultSet executeStoredProcedure(CallableStatement statement, List<Argument> preparedValues, Class<?> returnType); void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i); boolean useStreamsForLobs(); Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType); Object retrieveValue(CallableStatement results, int parameterIndex, Class<?> expectedType); void obtainedConnection(Connection connection); SQLConversionVisitor getSQLConversionVisitor(); boolean useParensForJoins(); @Override NullOrder getDefaultNullOrder(); boolean useSelectLimit(); String getLikeRegexString(); void setFetchSize(Command command, ExecutionContext context, Statement statement, int fetchSize); boolean supportsGeneratedKeys(); @TranslatorProperty(display="Struct retrieval", description="Struct retrieval mode (OBJECT, COPY, ARRAY)",advanced=true) StructRetrieval getStructRetrieval(); void setStructRetrieval(StructRetrieval structRetrieval); String createTempTable(String prefix, List<ColumnReference> cols, ExecutionContext context, Connection connection); String getCreateTempTableSQL(String name, List<ColumnReference> cols, boolean transactional); String getTemporaryTableName(String prefix); String getCreateTemporaryTablePostfix(boolean inTransaction); String getCreateTemporaryTableString(boolean inTransaction); SQLDialect getDialect(); String getHibernateDialectClassName(); @Override boolean supportsDependentJoins(); @Override boolean supportsFullDependentJoins(); boolean tempTableRequiresTransaction(); void loadedTemporaryTable(String tableName,
            ExecutionContext context, Connection connection); @TranslatorProperty(display="Enable Dependent Joins", description="Enable Dependent Join Pushdown",advanced=true) boolean isEnableDependentJoins(); void setEnableDependentJoins(boolean enableDependentJoins); boolean useWithRollup(); @TranslatorProperty(display="Comment Format", description= "Comment format string used with useCommentsInSourceQuery") String getCommentFormat(); void setCommentFormat(String commentFormat); boolean useScientificNotation(); boolean useUnicodePrefix(); boolean useNBindingType(); boolean isExtendedAscii(); void intializeConnectionAfterCancel(Connection c); @Override @TranslatorProperty(display="Use Bindings For Dependent Join", description= "If PreparedStatement bindings should be used for dependent join values.") boolean useBindingsForDependentJoin(); void setUseBindingsForDependentJoin(
            boolean useBindingsForDependentJoin); boolean useColumnNamesForGeneratedKeys(); String getLateralKeyword(); @TranslatorProperty(display="Remove Pushdown Characters", description="A case-sensitive regular expression of character strings to remove from string values that are pushed down.") String getRemovePushdownCharacters(); void setRemovePushdownCharacters(String removePushdownCharacters); boolean isDefaultTimeZone(); @Override boolean supportsProcedureParameterExpression(); static final int DEFAULT_MAX_IN_CRITERIA; static final int DEFAULT_MAX_DEPENDENT_PREDICATES; final static TimeZone DEFAULT_TIME_ZONE; }