org.postgresql.jdbc.PgParameterMetaData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of postgresql Show documentation
Show all versions of postgresql Show documentation
PostgreSQL JDBC Driver JDBC4
/*
* Copyright (c) 2004, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.jdbc;
import org.postgresql.core.BaseConnection;
import org.postgresql.util.GT;
import org.postgresql.util.PSQLException;
import org.postgresql.util.PSQLState;
import java.sql.ParameterMetaData;
import java.sql.SQLException;
public class PgParameterMetaData implements ParameterMetaData {
private final BaseConnection connection;
private final int[] oids;
public PgParameterMetaData(BaseConnection connection, int[] oids) {
this.connection = connection;
this.oids = oids;
}
@Override
public String getParameterClassName(int param) throws SQLException {
checkParamIndex(param);
return connection.getTypeInfo().getJavaClass(oids[param - 1]);
}
@Override
public int getParameterCount() {
return oids.length;
}
/**
* {@inheritDoc} For now report all parameters as inputs. CallableStatements may have one output,
* but ignore that for now.
*/
public int getParameterMode(int param) throws SQLException {
checkParamIndex(param);
return ParameterMetaData.parameterModeIn;
}
@Override
public int getParameterType(int param) throws SQLException {
checkParamIndex(param);
return connection.getTypeInfo().getSQLType(oids[param - 1]);
}
@Override
public String getParameterTypeName(int param) throws SQLException {
checkParamIndex(param);
return connection.getTypeInfo().getPGType(oids[param - 1]);
}
// we don't know this
public int getPrecision(int param) throws SQLException {
checkParamIndex(param);
return 0;
}
// we don't know this
public int getScale(int param) throws SQLException {
checkParamIndex(param);
return 0;
}
// we can't tell anything about nullability
public int isNullable(int param) throws SQLException {
checkParamIndex(param);
return ParameterMetaData.parameterNullableUnknown;
}
/**
* {@inheritDoc} PostgreSQL doesn't have unsigned numbers
*/
@Override
public boolean isSigned(int param) throws SQLException {
checkParamIndex(param);
return connection.getTypeInfo().isSigned(oids[param - 1]);
}
private void checkParamIndex(int param) throws PSQLException {
if (param < 1 || param > oids.length) {
throw new PSQLException(
GT.tr("The parameter index is out of range: {0}, number of parameters: {1}.",
param, oids.length),
PSQLState.INVALID_PARAMETER_VALUE);
}
}
public boolean isWrapperFor(Class> iface) throws SQLException {
return iface.isAssignableFrom(getClass());
}
public T unwrap(Class iface) throws SQLException {
if (iface.isAssignableFrom(getClass())) {
return iface.cast(this);
}
throw new SQLException("Cannot unwrap to " + iface.getName());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy