@Test public void testBooleanRetrival() throws SQLException { JDBCExecutionFactory jef = new JDBCExecutionFactory(); ResultSet rs = Mockito.mock(ResultSet.class); Mockito.stub(rs.getBoolean(1)).toReturn(false); Mockito.stub(rs.wasNull()).toReturn(true); assertNull(jef.retrieveValue(rs, 1, TypeFacility.RUNTIME_TYPES.BOOLEAN)); }
public Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType) throws SQLException { Integer code = DataTypeManager.getTypeCode(expectedType); if(code != null) { switch(code.intValue()) { case DataTypeManager.DefaultTypeCodes.INTEGER: { int value = results.getInt(columnIndex); if(results.wasNull()) { return null; } return Integer.valueOf(value); } case DataTypeManager.DefaultTypeCodes.LONG: { long value = results.getLong(columnIndex); if(results.wasNull()) { return null; } return Long.valueOf(value); } case DataTypeManager.DefaultTypeCodes.DOUBLE: { double value = results.getDouble(columnIndex); if(results.wasNull()) { return null; } return Double.valueOf(value); } case DataTypeManager.DefaultTypeCodes.BIGDECIMAL: { return results.getBigDecimal(columnIndex); } case DataTypeManager.DefaultTypeCodes.SHORT: { short value = results.getShort(columnIndex); if(results.wasNull()) { return null; } return Short.valueOf(value); } case DataTypeManager.DefaultTypeCodes.FLOAT: { float value = results.getFloat(columnIndex); if(results.wasNull()) { return null; } return Float.valueOf(value); } case DataTypeManager.DefaultTypeCodes.TIME: { return results.getTime(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.DATE: { return results.getDate(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.TIMESTAMP: { return results.getTimestamp(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.BLOB: { try { return results.getBlob(columnIndex); } catch (SQLException e) { } try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.GEOGRAPHY: { return retrieveGeographyValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.GEOMETRY: { return retrieveGeometryValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.JSON: try { return new JsonType(results.getClob(columnIndex)); } catch (SQLException e) { } break; case DataTypeManager.DefaultTypeCodes.CLOB: { try { return results.getClob(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.BOOLEAN: { boolean result = results.getBoolean(columnIndex); if(results.wasNull()) { return null; } return result; } case DataTypeManager.DefaultTypeCodes.VARBINARY: { try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } } } Object result = results.getObject(columnIndex); if (expectedType == TypeFacility.RUNTIME_TYPES.OBJECT) { return convertObject(result); } return result; }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType) throws SQLException { Integer code = DataTypeManager.getTypeCode(expectedType); if(code != null) { switch(code.intValue()) { case DataTypeManager.DefaultTypeCodes.INTEGER: { int value = results.getInt(columnIndex); if(results.wasNull()) { return null; } return Integer.valueOf(value); } case DataTypeManager.DefaultTypeCodes.LONG: { long value = results.getLong(columnIndex); if(results.wasNull()) { return null; } return Long.valueOf(value); } case DataTypeManager.DefaultTypeCodes.DOUBLE: { double value = results.getDouble(columnIndex); if(results.wasNull()) { return null; } return Double.valueOf(value); } case DataTypeManager.DefaultTypeCodes.BIGDECIMAL: { return results.getBigDecimal(columnIndex); } case DataTypeManager.DefaultTypeCodes.SHORT: { short value = results.getShort(columnIndex); if(results.wasNull()) { return null; } return Short.valueOf(value); } case DataTypeManager.DefaultTypeCodes.FLOAT: { float value = results.getFloat(columnIndex); if(results.wasNull()) { return null; } return Float.valueOf(value); } case DataTypeManager.DefaultTypeCodes.TIME: { return results.getTime(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.DATE: { return results.getDate(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.TIMESTAMP: { return results.getTimestamp(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.BLOB: { try { return results.getBlob(columnIndex); } catch (SQLException e) { } try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.GEOGRAPHY: { return retrieveGeographyValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.GEOMETRY: { return retrieveGeometryValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.JSON: try { return new JsonType(results.getClob(columnIndex)); } catch (SQLException e) { } break; case DataTypeManager.DefaultTypeCodes.CLOB: { try { return results.getClob(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.BOOLEAN: { boolean result = results.getBoolean(columnIndex); if(results.wasNull()) { return null; } return result; } case DataTypeManager.DefaultTypeCodes.VARBINARY: { try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } } } Object result = results.getObject(columnIndex); if (expectedType == TypeFacility.RUNTIME_TYPES.OBJECT) { return convertObject(result); } return result; } }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType) throws SQLException { Integer code = DataTypeManager.getTypeCode(expectedType); if(code != null) { switch(code.intValue()) { case DataTypeManager.DefaultTypeCodes.INTEGER: { int value = results.getInt(columnIndex); if(results.wasNull()) { return null; } return Integer.valueOf(value); } case DataTypeManager.DefaultTypeCodes.LONG: { long value = results.getLong(columnIndex); if(results.wasNull()) { return null; } return Long.valueOf(value); } case DataTypeManager.DefaultTypeCodes.DOUBLE: { double value = results.getDouble(columnIndex); if(results.wasNull()) { return null; } return Double.valueOf(value); } case DataTypeManager.DefaultTypeCodes.BIGDECIMAL: { return results.getBigDecimal(columnIndex); } case DataTypeManager.DefaultTypeCodes.SHORT: { short value = results.getShort(columnIndex); if(results.wasNull()) { return null; } return Short.valueOf(value); } case DataTypeManager.DefaultTypeCodes.FLOAT: { float value = results.getFloat(columnIndex); if(results.wasNull()) { return null; } return Float.valueOf(value); } case DataTypeManager.DefaultTypeCodes.TIME: { return results.getTime(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.DATE: { return results.getDate(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.TIMESTAMP: { return results.getTimestamp(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.BLOB: { try { return results.getBlob(columnIndex); } catch (SQLException e) { } try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.GEOGRAPHY: { return retrieveGeographyValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.GEOMETRY: { return retrieveGeometryValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.JSON: try { return new JsonType(results.getClob(columnIndex)); } catch (SQLException e) { } break; case DataTypeManager.DefaultTypeCodes.CLOB: { try { return results.getClob(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.BOOLEAN: { boolean result = results.getBoolean(columnIndex); if(results.wasNull()) { return null; } return result; } case DataTypeManager.DefaultTypeCodes.VARBINARY: { try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } } } Object result = results.getObject(columnIndex); if (expectedType == TypeFacility.RUNTIME_TYPES.OBJECT) { return convertObject(result); } return result; } JDBCExecutionFactory(); }
JDBCExecutionFactory extends ExecutionFactory<DataSource, Connection> { public Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType) throws SQLException { Integer code = DataTypeManager.getTypeCode(expectedType); if(code != null) { switch(code.intValue()) { case DataTypeManager.DefaultTypeCodes.INTEGER: { int value = results.getInt(columnIndex); if(results.wasNull()) { return null; } return Integer.valueOf(value); } case DataTypeManager.DefaultTypeCodes.LONG: { long value = results.getLong(columnIndex); if(results.wasNull()) { return null; } return Long.valueOf(value); } case DataTypeManager.DefaultTypeCodes.DOUBLE: { double value = results.getDouble(columnIndex); if(results.wasNull()) { return null; } return Double.valueOf(value); } case DataTypeManager.DefaultTypeCodes.BIGDECIMAL: { return results.getBigDecimal(columnIndex); } case DataTypeManager.DefaultTypeCodes.SHORT: { short value = results.getShort(columnIndex); if(results.wasNull()) { return null; } return Short.valueOf(value); } case DataTypeManager.DefaultTypeCodes.FLOAT: { float value = results.getFloat(columnIndex); if(results.wasNull()) { return null; } return Float.valueOf(value); } case DataTypeManager.DefaultTypeCodes.TIME: { return results.getTime(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.DATE: { return results.getDate(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.TIMESTAMP: { return results.getTimestamp(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.BLOB: { try { return results.getBlob(columnIndex); } catch (SQLException e) { } try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.GEOGRAPHY: { return retrieveGeographyValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.GEOMETRY: { return retrieveGeometryValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.JSON: try { return new JsonType(results.getClob(columnIndex)); } catch (SQLException e) { } break; case DataTypeManager.DefaultTypeCodes.CLOB: { try { return results.getClob(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.BOOLEAN: { boolean result = results.getBoolean(columnIndex); if(results.wasNull()) { return null; } return result; } case DataTypeManager.DefaultTypeCodes.VARBINARY: { try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } } } Object result = results.getObject(columnIndex); if (expectedType == TypeFacility.RUNTIME_TYPES.OBJECT) { return convertObject(result); } return result; } 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 Object retrieveValue(ResultSet results, int columnIndex, Class<?> expectedType) throws SQLException { Integer code = DataTypeManager.getTypeCode(expectedType); if(code != null) { switch(code.intValue()) { case DataTypeManager.DefaultTypeCodes.INTEGER: { int value = results.getInt(columnIndex); if(results.wasNull()) { return null; } return Integer.valueOf(value); } case DataTypeManager.DefaultTypeCodes.LONG: { long value = results.getLong(columnIndex); if(results.wasNull()) { return null; } return Long.valueOf(value); } case DataTypeManager.DefaultTypeCodes.DOUBLE: { double value = results.getDouble(columnIndex); if(results.wasNull()) { return null; } return Double.valueOf(value); } case DataTypeManager.DefaultTypeCodes.BIGDECIMAL: { return results.getBigDecimal(columnIndex); } case DataTypeManager.DefaultTypeCodes.SHORT: { short value = results.getShort(columnIndex); if(results.wasNull()) { return null; } return Short.valueOf(value); } case DataTypeManager.DefaultTypeCodes.FLOAT: { float value = results.getFloat(columnIndex); if(results.wasNull()) { return null; } return Float.valueOf(value); } case DataTypeManager.DefaultTypeCodes.TIME: { return results.getTime(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.DATE: { return results.getDate(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.TIMESTAMP: { return results.getTimestamp(columnIndex, getDatabaseCalendar()); } case DataTypeManager.DefaultTypeCodes.BLOB: { try { return results.getBlob(columnIndex); } catch (SQLException e) { } try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.GEOGRAPHY: { return retrieveGeographyValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.GEOMETRY: { return retrieveGeometryValue(results, columnIndex); } case DataTypeManager.DefaultTypeCodes.JSON: try { return new JsonType(results.getClob(columnIndex)); } catch (SQLException e) { } break; case DataTypeManager.DefaultTypeCodes.CLOB: { try { return results.getClob(columnIndex); } catch (SQLException e) { } break; } case DataTypeManager.DefaultTypeCodes.BOOLEAN: { boolean result = results.getBoolean(columnIndex); if(results.wasNull()) { return null; } return result; } case DataTypeManager.DefaultTypeCodes.VARBINARY: { try { return results.getBytes(columnIndex); } catch (SQLException e) { } break; } } } Object result = results.getObject(columnIndex); if (expectedType == TypeFacility.RUNTIME_TYPES.OBJECT) { return convertObject(result); } return result; } 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; }