@Test public void testInsertBind() throws Exception { final List<JdbcTest.Employee> employees = new ArrayList<>(); CalciteAssert.AssertThat with = mutable(employees); with.query("select count(*) as c from \"foo\".\"bar\"").returns("C=1\n"); with.doWithConnection( new Function<CalciteConnection, Object>() { public Object apply(CalciteConnection c) { try { final String sql = "insert into \"foo\".\"bar\"\n" + "values (?, 0, ?, 10.0, null)"; try (PreparedStatement p = c.prepareStatement(sql)) { p.setInt(1, 1); p.setString(2, "foo"); final int count = p.executeUpdate(); assertThat(count, is(1)); } return null; } catch (SQLException e) { throw Throwables.propagate(e); } } }); with.query("select count(*) as c from \"foo\".\"bar\"").returns("C=2\n"); with.query("select * from \"foo\".\"bar\"") .returnsUnordered( "empid=0; deptno=0; name=first; salary=0.0; commission=null", "empid=1; deptno=0; name=foo; salary=10.0; commission=null"); }
/** Some of the rows have the wrong number of columns. */ @Test public void testInsertMultipleRowMismatch() { final List<JdbcTest.Employee> employees = new ArrayList<>(); CalciteAssert.AssertThat with = mutable(employees); with.query( "insert into \"foo\".\"bar\" values\n" + " (1, 3, 'third'),\n" + " (1, 4, 'fourth'),\n" + " (1, 5, 'fifth ', 3)") .throws_("Incompatible types"); }
@Test public void testInsert2() { final List<JdbcTest.Employee> employees = new ArrayList<>(); CalciteAssert.AssertThat with = mutable(employees); with.query("insert into \"foo\".\"bar\" values (1, 1, 'second', 2, 2)").updates(1); with.query( "insert into \"foo\".\"bar\"\n" + "values (1, 3, 'third', 0, 3), (1, 4, 'fourth', 0, 4), (1, 5, 'fifth ', 0, 3)") .updates(3); with.query("select count(*) as c from \"foo\".\"bar\"").returns("C=5\n"); with.query("insert into \"foo\".\"bar\" values (1, 6, null, 0, null)").updates(1); with.query("select count(*) as c from \"foo\".\"bar\"").returns("C=6\n"); }
@Test public void testInsert() { final List<JdbcTest.Employee> employees = new ArrayList<>(); CalciteAssert.AssertThat with = mutable(employees); with.query("select * from \"foo\".\"bar\"") .returns("empid=0; deptno=0; name=first; salary=0.0; commission=null\n"); with.query("insert into \"foo\".\"bar\" select * from \"hr\".\"emps\"").updates(4); with.query("select count(*) as c from \"foo\".\"bar\"").returns("C=5\n"); with.query( "insert into \"foo\".\"bar\" " + "select * from \"hr\".\"emps\" where \"deptno\" = 10") .updates(3); with.query("select \"name\", count(*) as c from \"foo\".\"bar\" " + "group by \"name\"") .returnsUnordered( "name=Bill; C=2", "name=Eric; C=1", "name=Theodore; C=2", "name=first; C=1", "name=Sebastian; C=2"); }