
com.blazebit.persistence.impl.dialect.OracleDbmsDialect Maven / Gradle / Ivy
The newest version!
package com.blazebit.persistence.impl.dialect;
import java.util.Map;
import com.blazebit.persistence.spi.DbmsLimitHandler;
import com.blazebit.persistence.spi.DbmsModificationState;
import com.blazebit.persistence.spi.DbmsStatementType;
import com.blazebit.persistence.spi.ValuesStrategy;
public class OracleDbmsDialect extends DefaultDbmsDialect {
// private static final Method registerReturnParameter;
// private static final Method getReturnResultSet;
//
// static {
// Method registerReturnParameterMethod = null;
// Method getReturnResultSetMethod = null;
// try {
// Class> clazz = Class.forName("oracle.jdbc.OraclePreparedStatement");
// registerReturnParameterMethod = clazz.getMethod("registerReturnParameter", int.class, int.class);
// getReturnResultSetMethod = clazz.getMethod("getReturnResultSet");
// } catch (Exception e) {
// // Ignore
// }
//
// registerReturnParameter = registerReturnParameterMethod;
// getReturnResultSet = getReturnResultSetMethod;
// }
@Override
public boolean supportsTupleDistinctCounts() {
return false;
}
@Override
public Map appendExtendedSql(StringBuilder sqlSb, DbmsStatementType statementType, boolean isSubquery, boolean isEmbedded, StringBuilder withClause, String limit, String offset, String[] returningColumns, Map includedModificationStates) {
if (isSubquery) {
sqlSb.insert(0, '(');
}
// TODO: implement
sqlSb.insert(indexOfIgnoreCase(sqlSb, "select"), withClause);
if (isSubquery) {
sqlSb.append(')');
}
return null;
}
@Override
public boolean supportsReturningColumns() {
return true;
}
@Override
public DbmsLimitHandler createLimitHandler() {
// NOTE: Oracle12c should use SQL2008DbmsLimitHandler
return new OracleDbmsLimitHandler();
}
@Override
public ValuesStrategy getValuesStrategy() {
return ValuesStrategy.SELECT_UNION;
}
@Override
public String getDummyTable() {
return "dual";
}
// @Override
// public void applyQueryReturning(StringBuilder sqlSb, String[] returningColumns) {
// sqlSb.append(" returning ");
// for (int i = 0; i < returningColumns.length; i++) {
// if (i != 0) {
// sqlSb.append(',');
// }
// sqlSb.append(returningColumns[i]);
// }
// sqlSb.append(" into ");
// for (int i = 0; i < returningColumns.length; i++) {
// if (i != 0) {
// sqlSb.append(',');
// }
// sqlSb.append('?');
// }
// }
//
// @Override
// public void applyQueryReturning(PreparedStatement ps, int[] returningSqlTypes) throws SQLException {
// if (registerReturnParameter == null) {
// throw new IllegalStateException("Could not apply query returning because the class oracle.jdbc.OraclePreparedStatement could not be loaded!");
// }
//
// try {
// int offset = (ps.getParameterMetaData().getParameterCount() - returningSqlTypes.length) + 1;
// for (int i = 0; i < returningSqlTypes.length; i++) {
// registerReturnParameter.invoke(ps, offset + i, returningSqlTypes[i]);
// }
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
//
// @Override
// public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy