private void init() throws SQLException { int paramCount = targetStatement.getParameterMetaData().getParameterCount(); this.parameters = new ArrayList[paramCount]; for (int i = 0; i < paramCount; i++) { parameters[i] = new ArrayList<>(); } }
private void initParameterHolder() throws SQLException { int paramCount = targetStatement.getParameterMetaData().getParameterCount(); this.parameters = new ArrayList[paramCount]; for (int i = 0; i < paramCount; i++) { parameters[i] = new ArrayList<>(); } }
/** * Creates a mapping between column positions and their data types * @return A map containing the position of the columns along with their data type as value */ private Map<Integer, Integer> getColumnPosSqlTypes() { try { final Map<Integer, Integer> columnPosSqlTypes = Maps.newHashMap(); ParameterMetaData pMetaData = this.insertPstmtForFixedBatch.getParameterMetaData(); for (int i = 1; i <= pMetaData.getParameterCount(); i++) { columnPosSqlTypes.put(i, pMetaData.getParameterType(i)); } return columnPosSqlTypes; } catch (SQLException e) { throw new RuntimeException("Cannot retrieve columns types for batch insert", e); } }
private static String getParameterResultSet(ParameterMetaData meta) throws SQLException { StringBuilder buff = new StringBuilder(); if (meta == null) { return "No parameter meta data"; } buff.append("<table cellspacing=0 cellpadding=0>"). append("<tr><th>className</th><th>mode</th><th>type</th>"). append("<th>typeName</th><th>precision</th><th>scale</th></tr>"); for (int i = 0; i < meta.getParameterCount(); i++) { buff.append("</tr><td>"). append(meta.getParameterClassName(i + 1)). append("</td><td>"). append(meta.getParameterMode(i + 1)). append("</td><td>"). append(meta.getParameterType(i + 1)). append("</td><td>"). append(meta.getParameterTypeName(i + 1)). append("</td><td>"). append(meta.getPrecision(i + 1)). append("</td><td>"). append(meta.getScale(i + 1)). append("</td></tr>"); } buff.append("</table>"); return buff.toString(); }
@Override public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, user.getUsername()); ps.setString(2, user.getPassword()); ps.setBoolean(3, user.isEnabled()); int paramCount = ps.getParameterMetaData().getParameterCount(); if (paramCount > 3) { //NOTE: acc_locked, acc_expired and creds_expired are also to be inserted ps.setBoolean(4, !user.isAccountNonLocked()); ps.setBoolean(5, !user.isAccountNonExpired()); ps.setBoolean(6, !user.isCredentialsNonExpired()); } } });
if (!pmdKnownBroken) { pmd = stmt.getParameterMetaData(); int stmtCount = pmd.getParameterCount(); int paramsCount = params == null ? 0 : params.length;
if (!pmdKnownBroken) { pmd = stmt.getParameterMetaData(); int stmtCount = pmd.getParameterCount(); int paramsCount = params == null ? 0 : params.length;
@Override public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, user.getPassword()); ps.setBoolean(2, user.isEnabled()); int paramCount = ps.getParameterMetaData().getParameterCount(); if (paramCount == 3) { ps.setString(3, user.getUsername()); } else { //NOTE: acc_locked, acc_expired and creds_expired are also updated ps.setBoolean(3, !user.isAccountNonLocked()); ps.setBoolean(4, !user.isAccountNonExpired()); ps.setBoolean(5, !user.isCredentialsNonExpired()); ps.setString(6, user.getUsername()); } } });
private void sendParameterDescription(ParameterMetaData meta, int[] paramTypes) throws Exception { int count = meta.getParameterCount(); startMessage('t'); writeShort(count); for (int i = 0; i < count; i++) { int type; if (paramTypes != null && paramTypes[i] != 0) { type = paramTypes[i]; } else { type = PgServer.PG_TYPE_VARCHAR; } server.checkType(type); writeInt(type); } sendMessage(); }
private void registerOutParameter(int parameterIndex) throws SQLException { try { checkClosed(); if (outParameters == null) { maxOutParameters = Math.min( getParameterMetaData().getParameterCount(), getCheckedMetaData().getColumnCount()); outParameters = new BitField(); } checkIndexBounds(parameterIndex); ParameterInterface param = command.getParameters().get(--parameterIndex); if (!param.isValueSet()) { param.setValue(ValueNull.INSTANCE, false); } outParameters.set(parameterIndex); } catch (Exception e) { throw logAndConvert(e); } }
/** * @param req Request. * @return Response. */ private ClientListenerResponse getParametersMeta(JdbcMetaParamsRequest req) { try { ParameterMetaData paramMeta = ctx.query().prepareNativeStatement(req.schemaName(), req.sql()) .getParameterMetaData(); int size = paramMeta.getParameterCount(); List<JdbcParameterMeta> meta = new ArrayList<>(size); for (int i = 0; i < size; i++) meta.add(new JdbcParameterMeta(paramMeta, i + 1)); JdbcMetaParamsResult res = new JdbcMetaParamsResult(meta); return new JdbcResponse(res); } catch (Exception e) { U.error(log, "Failed to get parameters metadata [reqId=" + req.requestId() + ", req=" + req + ']', e); return exceptionToResult(e); } }
private void registerOutParameter(int parameterIndex) throws SQLException { try { checkClosed(); if (outParameters == null) { maxOutParameters = Math.min(getParameterMetaData().getParameterCount(), getCheckedMetaData().getColumnCount()); outParameters = new BitField(); } checkIndexBounds(parameterIndex); CommandParameter param = command.getParameters().get(--parameterIndex); if (param.getValue() == null) { param.setValue(ValueNull.INSTANCE, false); } outParameters.set(parameterIndex); } catch (Exception e) { throw logAndConvert(e); } }
/** * {@link OdbcQueryGetParamsMetaRequest} command handler. * * @param req Get params metadata request. * @return Response. */ private ClientListenerResponse getParamsMeta(OdbcQueryGetParamsMetaRequest req) { try { PreparedStatement stmt = ctx.query().getIndexing().prepareNativeStatement(req.schema(), req.query()); ParameterMetaData pmd = stmt.getParameterMetaData(); byte[] typeIds = new byte[pmd.getParameterCount()]; for (int i = 1; i <= pmd.getParameterCount(); ++i) { int sqlType = pmd.getParameterType(i); typeIds[i - 1] = sqlTypeToBinary(sqlType); } OdbcQueryGetParamsMetaResult res = new OdbcQueryGetParamsMetaResult(typeIds); return new OdbcResponse(res); } catch (Exception e) { U.error(log, "Failed to get params metadata [reqId=" + req.requestId() + ", req=" + req + ']', e); return exceptionToResult(e); } }
/** * @throws Exception If failed. */ @Test public void testParametersMetadata() throws Exception { try (Connection conn = DriverManager.getConnection(URL)) { conn.setSchema("\"pers\""); PreparedStatement stmt = conn.prepareStatement("select orgId from Person p where p.name > ? and p.orgId > ?"); ParameterMetaData meta = stmt.getParameterMetaData(); assert meta != null; assert meta.getParameterCount() == 2; assert meta.getParameterType(1) == Types.VARCHAR; assert meta.isNullable(1) == ParameterMetaData.parameterNullableUnknown; assert meta.getPrecision(1) == Integer.MAX_VALUE; assert meta.getParameterType(2) == Types.INTEGER; assert meta.isNullable(2) == ParameterMetaData.parameterNullableUnknown; } }
/** * @throws Exception If failed. */ @Test public void testParametersMetadata() throws Exception { try (Connection conn = DriverManager.getConnection(BASE_URL)) { conn.setSchema("pers"); PreparedStatement stmt = conn.prepareStatement("select orgId from Person p where p.name > ? and p.orgId > ?"); ParameterMetaData meta = stmt.getParameterMetaData(); assertNotNull(meta); assertEquals(2, meta.getParameterCount()); assertEquals(Types.VARCHAR, meta.getParameterType(1)); assertEquals(ParameterMetaData.parameterNullableUnknown, meta.isNullable(1)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(1)); assertEquals(Types.INTEGER, meta.getParameterType(2)); assertEquals(ParameterMetaData.parameterNullableUnknown, meta.isNullable(2)); } }
try { ParameterMetaData pmd = ps.getParameterMetaData(); for ( int i = 1; i <= pmd.getParameterCount(); i++ ) { String name = "par" + i; int sqltype = pmd.getParameterType( i );
p.prep = (JdbcPreparedStatement) conn.prepareStatement(p.sql); ParameterMetaData meta = p.prep.getParameterMetaData(); p.paramType = new int[meta.getParameterCount()]; for (int i = 0; i < p.paramType.length; i++) { int type;
@Test public void testDateAdditionExpressionMetaData1() throws Exception { String query = "SELECT entity_id,a_string FROM atable where 1+a_date+?>a_date"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); assertEquals(BigDecimal.class.getName(), pmd.getParameterClassName(1)); }
@Test public void testLimitParameterMetaData() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE organization_id=? and a_string = 'foo' LIMIT ?"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(2, pmd.getParameterCount()); assertEquals(String.class.getName(), pmd.getParameterClassName(1)); assertEquals(Integer.class.getName(), pmd.getParameterClassName(2)); }
@Test public void testParameterMetaData() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE organization_id=? and (a_integer = ? or a_date = ? or b_string = ? or a_string = 'foo')"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(4, pmd.getParameterCount()); assertEquals(String.class.getName(), pmd.getParameterClassName(1)); assertEquals(Integer.class.getName(), pmd.getParameterClassName(2)); assertEquals(Date.class.getName(), pmd.getParameterClassName(3)); assertEquals(String.class.getName(), pmd.getParameterClassName(4)); }