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(); }
/** * @param meta Param metadata. * @param order Param order. * @throws SQLException On errror. */ public JdbcParameterMeta(ParameterMetaData meta, int order) throws SQLException { isNullable = meta.isNullable(order); signed = meta.isSigned(order); precision = meta.getPrecision(order); scale = meta.getScale(order); type = meta.getParameterType(order); typeName = meta.getParameterTypeName(order); typeClass = meta.getParameterClassName(order); mode = meta.getParameterMode(order); }
@Test public void testBindParamMetaDataForNestedRVC() throws Exception { String query = "SELECT organization_id, entity_id, a_string FROM aTable WHERE (organization_id, (entity_id, a_string)) >= (?, (?, ?))"; Connection conn = DriverManager.getConnection(PHOENIX_JDBC_URL, TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(3, pmd.getParameterCount()); assertEquals(String.class.getName(), pmd.getParameterClassName(1)); assertEquals(String.class.getName(), pmd.getParameterClassName(2)); assertEquals(String.class.getName(), pmd.getParameterClassName(3)); } }
@Test public void testSubstrParameterMetaData() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE substr(a_string,?,?) = ?"; Connection conn = DriverManager.getConnection(getUrl(), TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(3, pmd.getParameterCount()); assertEquals(Long.class.getName(), pmd.getParameterClassName(1)); assertEquals(Long.class.getName(), pmd.getParameterClassName(2)); assertEquals(String.class.getName(), pmd.getParameterClassName(3)); }
@Test public void testRowValueConstructorBindParamMetaData() throws Exception { String query = "SELECT a_integer, x_integer FROM aTable WHERE (a_integer, x_integer, a_string) = (?, ?, ?)"; Connection conn = DriverManager.getConnection(getUrl(), TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(3, pmd.getParameterCount()); assertEquals(Integer.class.getName(), pmd.getParameterClassName(1)); assertEquals(Integer.class.getName(), pmd.getParameterClassName(2)); assertEquals(String.class.getName(), pmd.getParameterClassName(3)); }
@Test public void testBindParamMetaDataForNestedRVC() throws Exception { String query = "SELECT organization_id, entity_id, a_string FROM aTable WHERE (organization_id, (entity_id, a_string)) >= (?, (?, ?))"; Connection conn = DriverManager.getConnection(PHOENIX_JDBC_URL, PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(3, pmd.getParameterCount()); assertEquals(String.class.getName(), pmd.getParameterClassName(1)); assertEquals(String.class.getName(), pmd.getParameterClassName(2)); assertEquals(String.class.getName(), pmd.getParameterClassName(3)); } }
public void testRowValueConstructorBindParamMetaDataWithBindArgsOnLHSAndLiteralExprOnRHS() throws Exception { String query = "SELECT a_integer, x_integer FROM aTable WHERE (?, ?) = 7"; Connection conn = DriverManager.getConnection(getUrl(), TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(2, pmd.getParameterCount()); assertEquals(Integer.class.getName(), pmd.getParameterClassName(1)); assertEquals(null, pmd.getParameterClassName(2)); }
@Test public void testSubstrParameterMetaData() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE substr(a_string,?,?) = ?"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(3, pmd.getParameterCount()); assertEquals(Long.class.getName(), pmd.getParameterClassName(1)); assertEquals(Long.class.getName(), pmd.getParameterClassName(2)); assertEquals(String.class.getName(), pmd.getParameterClassName(3)); }
@Test public void testRowValueConstructorBindParamMetaData() throws Exception { String query = "SELECT a_integer, x_integer FROM aTable WHERE (a_integer, x_integer, a_string) = (?, ?, ?)"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(3, pmd.getParameterCount()); assertEquals(Integer.class.getName(), pmd.getParameterClassName(1)); assertEquals(Integer.class.getName(), pmd.getParameterClassName(2)); assertEquals(String.class.getName(), pmd.getParameterClassName(3)); }
@Test public void testStringConcatMetaData() throws Exception { String query = "SELECT entity_id,a_string FROM atable where 2 || a_integer || ? like '2%'"; Connection conn = DriverManager.getConnection(PHOENIX_JDBC_URL, TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query); statement.setString(1, "foo"); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); assertEquals(String.class.getName(), pmd.getParameterClassName(1)); }
public void testRowValueConstructorBindParamMetaDataWithBindArgsOnLHSAndLiteralExprOnRHS() throws Exception { String query = "SELECT a_integer, x_integer FROM aTable WHERE (?, ?) = 7"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(2, pmd.getParameterCount()); assertEquals(Integer.class.getName(), pmd.getParameterClassName(1)); assertEquals(null, pmd.getParameterClassName(2)); }
@Test public void testRoundParameterMetaData() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE round(a_date,'day', ?) = ?"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(2, pmd.getParameterCount()); assertEquals(Integer.class.getName(), pmd.getParameterClassName(1)); assertEquals(Date.class.getName(), pmd.getParameterClassName(2)); }
@Test public void testInListParameterMetaData1() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE a_string IN (?, ?)"; 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(String.class.getName(), pmd.getParameterClassName(2)); }
@Test public void testRowValueConstructorBindParamMetaDataWithLessNumberOfBindArgs() throws Exception { String query = "SELECT a_integer, x_integer FROM aTable WHERE (a_integer, x_integer, a_string) = (?, ?)"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(2, pmd.getParameterCount()); assertEquals(Integer.class.getName(), pmd.getParameterClassName(1)); assertEquals(Integer.class.getName(), pmd.getParameterClassName(2)); }
@Test public void testDateSubstractExpressionMetaData2() throws Exception { String query = "SELECT entity_id,a_string FROM atable where a_date-?=a_date"; Connection conn = DriverManager.getConnection(PHOENIX_JDBC_URL, TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); // FIXME: Should really be Date, but we currently don't know if we're // comparing to a date or a number where this is being calculated // (which would disambiguate it). assertEquals(null, pmd.getParameterClassName(1)); }
@Test public void testToDateFunctionMetaData() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE a_date > to_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(String.class.getName(), pmd.getParameterClassName(1)); }
@Test public void testDateAdditionExpressionMetaData2() throws Exception { String query = "SELECT entity_id,a_string FROM atable where ?+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 testInListParameterMetaData3() throws Exception { String query = "SELECT a_string, b_string FROM atable WHERE ? IN ('foo')"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); assertEquals(String.class.getName(), pmd.getParameterClassName(1)); }
@Test public void testDateSubstractExpressionMetaData1() throws Exception { String query = "SELECT entity_id,a_string FROM atable where a_date-2.5-?=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 testTwoDateSubstractExpressionMetaData() throws Exception { String query = "SELECT entity_id,a_string FROM atable where ?-a_date=1"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); // We know this must be date - anything else would be an error assertEquals(Date.class.getName(), pmd.getParameterClassName(1)); }