package my.test.expression; import my.test.TestBase; public class ExpressionColumnTest extends TestBase { public static void main(String[] args) throws Exception { new ExpressionColumnTest().start(); } //测试org.h2.expression.ExpressionColumn @Override public void startInternal() throws Exception { stmt.executeUpdate("drop table IF EXISTS ExpressionColumnTest"); stmt.executeUpdate("create table IF NOT EXISTS ExpressionColumnTest(id int, name varchar(500))"); stmt.executeUpdate("insert into ExpressionColumnTest(id, name) values(1, 'a1')"); stmt.executeUpdate("insert into ExpressionColumnTest(id, name) values(1, 'b1')"); stmt.executeUpdate("insert into ExpressionColumnTest(id, name) values(2, 'a2')"); stmt.executeUpdate("insert into ExpressionColumnTest(id, name) values(2, 'b2')"); stmt.executeUpdate("insert into ExpressionColumnTest(id, name) values(3, 'a3')"); stmt.executeUpdate("insert into ExpressionColumnTest(id, name) values(3, 'b3')"); //public.ExpressionColumnTest.id这样用是不对的 //在org.h2.expression.ExpressionColumn.optimize(Session)中检查 sql = "SELECT public.ExpressionColumnTest.id FROM ExpressionColumnTest as t"; //public.t.id这样才行,因为右边有as t sql = "SELECT public.t.id FROM ExpressionColumnTest as t"; sql = "SELECT _rowid_, id, name FROM ExpressionColumnTest WHERE _rowid_>2"; executeQuery(); } }