Search in sources :

Example 21 with Alias

use of org.h2.expression.Alias in project h2database by h2database.

the class TestFunctions method testPrecision.

private void testPrecision() throws SQLException {
    Connection conn = getConnection("functions");
    Statement stat = conn.createStatement();
    stat.execute("create alias no_op for \"" + getClass().getName() + ".noOp\"");
    PreparedStatement prep = conn.prepareStatement("select * from dual where no_op(1.6)=?");
    prep.setBigDecimal(1, new BigDecimal("1.6"));
    ResultSet rs = prep.executeQuery();
    assertTrue(rs.next());
    stat.execute("create aggregate agg_sum for \"" + getClass().getName() + "\"");
    rs = stat.executeQuery("select agg_sum(1), sum(1.6) from dual");
    rs.next();
    assertEquals(1, rs.getMetaData().getScale(2));
    assertEquals(32767, rs.getMetaData().getScale(1));
    stat.executeQuery("select * from information_schema.function_aliases");
    conn.close();
}
Also used : PreparedStatement(java.sql.PreparedStatement) CallableStatement(java.sql.CallableStatement) Statement(java.sql.Statement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) SimpleResultSet(org.h2.tools.SimpleResultSet) PreparedStatement(java.sql.PreparedStatement) BigDecimal(java.math.BigDecimal)

Example 22 with Alias

use of org.h2.expression.Alias in project h2database by h2database.

the class TestFunctions method testVarArgs.

private void testVarArgs() throws SQLException {
    Connection conn = getConnection("functions");
    Statement stat = conn.createStatement();
    stat.execute("CREATE ALIAS mean FOR \"" + getClass().getName() + ".mean\"");
    ResultSet rs = stat.executeQuery("select mean(), mean(10), mean(10, 20), mean(10, 20, 30)");
    rs.next();
    assertEquals(1.0, rs.getDouble(1));
    assertEquals(10.0, rs.getDouble(2));
    assertEquals(15.0, rs.getDouble(3));
    assertEquals(20.0, rs.getDouble(4));
    stat.execute("CREATE ALIAS mean2 FOR \"" + getClass().getName() + ".mean2\"");
    rs = stat.executeQuery("select mean2(), mean2(10), mean2(10, 20)");
    rs.next();
    assertEquals(Double.NaN, rs.getDouble(1));
    assertEquals(10.0, rs.getDouble(2));
    assertEquals(15.0, rs.getDouble(3));
    DatabaseMetaData meta = conn.getMetaData();
    rs = meta.getProcedureColumns(null, null, "MEAN2", null);
    assertTrue(rs.next());
    assertEquals("P0", rs.getString("COLUMN_NAME"));
    assertTrue(rs.next());
    assertEquals("FUNCTIONS", rs.getString("PROCEDURE_CAT"));
    assertEquals("PUBLIC", rs.getString("PROCEDURE_SCHEM"));
    assertEquals("MEAN2", rs.getString("PROCEDURE_NAME"));
    assertEquals("P2", rs.getString("COLUMN_NAME"));
    assertEquals(DatabaseMetaData.procedureColumnIn, rs.getInt("COLUMN_TYPE"));
    assertEquals("OTHER", rs.getString("TYPE_NAME"));
    assertEquals(Integer.MAX_VALUE, rs.getInt("PRECISION"));
    assertEquals(Integer.MAX_VALUE, rs.getInt("LENGTH"));
    assertEquals(0, rs.getInt("SCALE"));
    assertEquals(DatabaseMetaData.columnNullable, rs.getInt("NULLABLE"));
    assertEquals("", rs.getString("REMARKS"));
    assertEquals(null, rs.getString("COLUMN_DEF"));
    assertEquals(0, rs.getInt("SQL_DATA_TYPE"));
    assertEquals(0, rs.getInt("SQL_DATETIME_SUB"));
    assertEquals(0, rs.getInt("CHAR_OCTET_LENGTH"));
    assertEquals(1, rs.getInt("ORDINAL_POSITION"));
    assertEquals("YES", rs.getString("IS_NULLABLE"));
    assertEquals("MEAN2", rs.getString("SPECIFIC_NAME"));
    assertFalse(rs.next());
    stat.execute("CREATE ALIAS printMean FOR \"" + getClass().getName() + ".printMean\"");
    rs = stat.executeQuery("select printMean('A'), printMean('A', 10), " + "printMean('BB', 10, 20), printMean ('CCC', 10, 20, 30)");
    rs.next();
    assertEquals("A: 0", rs.getString(1));
    assertEquals("A: 10", rs.getString(2));
    assertEquals("BB: 15", rs.getString(3));
    assertEquals("CCC: 20", rs.getString(4));
    conn.close();
}
Also used : PreparedStatement(java.sql.PreparedStatement) CallableStatement(java.sql.CallableStatement) Statement(java.sql.Statement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) SimpleResultSet(org.h2.tools.SimpleResultSet) DatabaseMetaData(java.sql.DatabaseMetaData)

Example 23 with Alias

use of org.h2.expression.Alias in project h2database by h2database.

the class TestFunctions method testFunctionInSchema.

private void testFunctionInSchema() throws SQLException {
    Connection conn = getConnection("functions");
    Statement stat = conn.createStatement();
    stat.execute("create schema schema2");
    stat.execute("create alias schema2.func as 'int x() { return 1; }'");
    stat.execute("create view test as select schema2.func()");
    ResultSet rs;
    rs = stat.executeQuery("select * from information_schema.views");
    rs.next();
    assertContains(rs.getString("VIEW_DEFINITION"), "SCHEMA2.FUNC");
    stat.execute("drop view test");
    stat.execute("drop schema schema2 cascade");
    conn.close();
}
Also used : PreparedStatement(java.sql.PreparedStatement) CallableStatement(java.sql.CallableStatement) Statement(java.sql.Statement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) SimpleResultSet(org.h2.tools.SimpleResultSet)

Example 24 with Alias

use of org.h2.expression.Alias in project h2database by h2database.

the class TestFunctions method testValue.

private void testValue() throws SQLException {
    Connection conn = getConnection("functions");
    Statement stat = conn.createStatement();
    ResultSet rs;
    stat.execute("create alias TO_CHAR_2 for \"" + getClass().getName() + ".toChar\"");
    rs = stat.executeQuery("call TO_CHAR_2(TIMESTAMP '2001-02-03 04:05:06', 'format')");
    rs.next();
    assertEquals("2001-02-03 04:05:06", rs.getString(1));
    stat.execute("drop alias TO_CHAR_2");
    conn.close();
}
Also used : PreparedStatement(java.sql.PreparedStatement) CallableStatement(java.sql.CallableStatement) Statement(java.sql.Statement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) SimpleResultSet(org.h2.tools.SimpleResultSet)

Example 25 with Alias

use of org.h2.expression.Alias in project h2database by h2database.

the class TestFunctions method testArrayParameters.

private void testArrayParameters() throws SQLException {
    deleteDb("functions");
    Connection conn = getConnection("functions");
    Statement stat = conn.createStatement();
    ResultSet rs;
    stat.execute("create alias array_test AS " + "$$ Integer[] array_test(Integer[] in_array) " + "{ return in_array; } $$;");
    PreparedStatement stmt = conn.prepareStatement("select array_test(?) from dual");
    stmt.setObject(1, new Integer[] { 1, 2 });
    rs = stmt.executeQuery();
    rs.next();
    assertEquals(Integer[].class.getName(), rs.getObject(1).getClass().getName());
    CallableStatement call = conn.prepareCall("{ ? = call array_test(?) }");
    call.setObject(2, new Integer[] { 2, 1 });
    call.registerOutParameter(1, Types.ARRAY);
    call.execute();
    assertEquals(Integer[].class.getName(), call.getArray(1).getArray().getClass().getName());
    assertEquals(new Integer[] { 2, 1 }, (Integer[]) call.getObject(1));
    stat.execute("drop alias array_test");
    conn.close();
}
Also used : PreparedStatement(java.sql.PreparedStatement) CallableStatement(java.sql.CallableStatement) Statement(java.sql.Statement) CallableStatement(java.sql.CallableStatement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) SimpleResultSet(org.h2.tools.SimpleResultSet) PreparedStatement(java.sql.PreparedStatement)

Aggregations

ResultSet (java.sql.ResultSet)38 Statement (java.sql.Statement)38 Connection (java.sql.Connection)31 SimpleResultSet (org.h2.tools.SimpleResultSet)31 PreparedStatement (java.sql.PreparedStatement)28 CallableStatement (java.sql.CallableStatement)18 ValueString (org.h2.value.ValueString)17 SQLException (java.sql.SQLException)11 Column (org.h2.table.Column)10 GridSqlColumn (org.apache.ignite.internal.processors.query.h2.sql.GridSqlColumn)6 Expression (org.h2.expression.Expression)6 ArrayList (java.util.ArrayList)5 HashMap (java.util.HashMap)5 GridSqlAlias (org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias)5 GridH2Table (org.apache.ignite.internal.processors.query.h2.opt.GridH2Table)4 GridSqlElement (org.apache.ignite.internal.processors.query.h2.sql.GridSqlElement)4 GridSqlSelect (org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect)4 GridSqlTable (org.apache.ignite.internal.processors.query.h2.sql.GridSqlTable)4 Session (org.h2.engine.Session)4 ValueExpression (org.h2.expression.ValueExpression)4