You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by el...@apache.org on 2016/04/04 21:03:29 UTC

calcite git commit: [CALCITE-1113] Test for precision and scale in column metadata

Repository: calcite
Updated Branches:
  refs/heads/master 032e0d9a5 -> ea71f9295


[CALCITE-1113] Test for precision and scale in column metadata


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/ea71f929
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/ea71f929
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/ea71f929

Branch: refs/heads/master
Commit: ea71f9295ae3bed9b88046f9a9e426bcc93a0005
Parents: 032e0d9
Author: Josh Elser <el...@apache.org>
Authored: Mon Apr 4 14:47:30 2016 -0400
Committer: Josh Elser <el...@apache.org>
Committed: Mon Apr 4 15:00:13 2016 -0400

----------------------------------------------------------------------
 .../calcite/avatica/RemoteDriverTest.java       | 38 ++++++++++++++++++++
 1 file changed, 38 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/ea71f929/avatica/server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
----------------------------------------------------------------------
diff --git a/avatica/server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java b/avatica/server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
index c32a54c..191802c 100644
--- a/avatica/server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
+++ b/avatica/server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
@@ -1608,6 +1608,44 @@ public class RemoteDriverTest {
     }
   }
 
+  @Test public void testDecimalParameters() throws Exception {
+    final String tableName = "decimalParameters";
+    BigDecimal decimal = new BigDecimal("123451234512345");
+    try (Connection conn = getLocalConnection();
+        Statement stmt = conn.createStatement()) {
+      assertFalse(stmt.execute("DROP TABLE IF EXISTS " + tableName));
+      String sql = "CREATE TABLE " + tableName + " (keycolumn VARCHAR(5), column1 DECIMAL(15,0))";
+      assertFalse(stmt.execute(sql));
+
+      getRequestInspection().getRequestLogger().enableAndClear();
+      // Insert a single decimal
+      try (PreparedStatement pstmt = conn.prepareStatement("INSERT INTO " + tableName
+          + " values (?, ?)")) {
+        ParameterMetaData metadata = pstmt.getParameterMetaData();
+        assertNotNull(metadata);
+        assertEquals(5, metadata.getPrecision(1));
+        assertEquals(0, metadata.getScale(1));
+        assertEquals(15, metadata.getPrecision(2));
+        assertEquals(0, metadata.getScale(2));
+
+        pstmt.setString(1, "asdfg");
+        pstmt.setBigDecimal(2, decimal);
+        assertEquals(1, pstmt.executeUpdate());
+      }
+
+      ResultSet results = stmt.executeQuery("SELECT * FROM " + tableName);
+      assertNotNull(results);
+      assertTrue(results.next());
+      BigDecimal actualDecimal = results.getBigDecimal(2);
+      assertEquals(decimal, actualDecimal);
+
+      ResultSetMetaData resultMetadata = results.getMetaData();
+      assertNotNull(resultMetadata);
+      assertEquals(15, resultMetadata.getPrecision(2));
+      assertEquals(0, resultMetadata.getScale(2));
+    }
+  }
+
   /**
    * Factory that creates a service based on a local JDBC connection.
    */