Search in sources :

Example 1 with MissingJDBCParameterException

use of herddb.model.MissingJDBCParameterException in project herddb by diennea.

the class RawSQLTest method jdbcWrongParameterCountTest.

@Test
public void jdbcWrongParameterCountTest() throws Exception {
    String nodeId = "localhost";
    try (DBManager manager = new DBManager("localhost", new MemoryMetadataStorageManager(), new MemoryDataStorageManager(), new MemoryCommitLogManager(), null, null)) {
        manager.start();
        CreateTableSpaceStatement st1 = new CreateTableSpaceStatement("tblspace1", Collections.singleton(nodeId), nodeId, 1, 0, 0);
        manager.executeStatement(st1, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT(), TransactionContext.NO_TRANSACTION);
        manager.waitForTablespace("tblspace1", 10000);
        execute(manager, "CREATE TABLE tblspace1.tsql (k1 string primary key,n1 int,s1 string)", Collections.emptyList());
        assertEquals(1, executeUpdate(manager, "INSERT INTO tblspace1.tsql(k1,n1) values(?,?)", Arrays.asList("mykey", Integer.valueOf(1234))).getUpdateCount());
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql where k1=?", Collections.emptyList());
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(1, ok.getIndex());
        }
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql where k1=1 and n1=?", Collections.emptyList());
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(1, ok.getIndex());
        }
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql where k1=1 or n1=?", Collections.emptyList());
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(1, ok.getIndex());
        }
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql order by k1 limit ?", Collections.emptyList());
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(1, ok.getIndex());
        }
        if (manager.getPlanner() instanceof SQLPlanner) {
            try {
                scan(manager, "SELECT * FROM tblspace1.tsql where n1 = 1234 and k1 in " + "(SELECT k1 FROM tblspace1.tsql order by k1 limit ?) and n1 = ?", Arrays.asList(1));
                fail();
            } catch (MissingJDBCParameterException ok) {
                assertEquals(2, ok.getIndex());
            }
            scan(manager, "SELECT * FROM tblspace1.tsql where n1 = ? and k1 in " + "(SELECT k1 FROM tblspace1.tsql order by k1 limit ?)", Arrays.asList(1));
            try {
                scan(manager, "SELECT * FROM tblspace1.tsql where k1 in " + "(SELECT k1 FROM tblspace1.tsql order by k1 limit ?)", Collections.emptyList());
                fail();
            } catch (MissingJDBCParameterException ok) {
                assertEquals(1, ok.getIndex());
            }
            try {
                scan(manager, "SELECT * FROM tblspace1.tsql where k1 in (SELECT k1+? FROM tblspace1.tsql)", Collections.emptyList());
                fail();
            } catch (MissingJDBCParameterException ok) {
                assertEquals(1, ok.getIndex());
            }
        }
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql where k1 in (SELECT k1 FROM tblspace1.tsql where n1=?)", Collections.emptyList());
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(1, ok.getIndex());
        }
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql where n1=? and k1 in (SELECT k1 FROM tblspace1.tsql where n1=?)", Arrays.asList(1));
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(2, ok.getIndex());
        }
        try {
            scan(manager, "SELECT * FROM tblspace1.tsql where k1=1 and n1=? and n1=?", Arrays.asList(1));
            fail();
        } catch (MissingJDBCParameterException ok) {
            assertEquals(2, ok.getIndex());
        }
        try {
            scan(manager, "SELECT n1+? FROM tblspace1.tsql", Collections.emptyList());
        } catch (MissingJDBCParameterException ok) {
            assertEquals(1, ok.getIndex());
        }
        if (manager.getPlanner() instanceof SQLPlanner) {
            try {
                scan(manager, "SELECT sum(n1), sum(?) FROM tblspace1.tsql", Collections.emptyList());
            } catch (MissingJDBCParameterException ok) {
                assertEquals(1, ok.getIndex());
            }
        }
    }
}
Also used : CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) MissingJDBCParameterException(herddb.model.MissingJDBCParameterException) MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) RawString(herddb.utils.RawString) SQLPlanner(herddb.sql.SQLPlanner) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) Test(org.junit.Test)

Example 2 with MissingJDBCParameterException

use of herddb.model.MissingJDBCParameterException in project herddb by diennea.

the class RawSQLTest method limitsTest.

@Test
public void limitsTest() throws Exception {
    String nodeId = "localhost";
    try (DBManager manager = new DBManager("localhost", new MemoryMetadataStorageManager(), new MemoryDataStorageManager(), new MemoryCommitLogManager(), null, null)) {
        manager.start();
        CreateTableSpaceStatement st1 = new CreateTableSpaceStatement("tblspace1", Collections.singleton(nodeId), nodeId, 1, 0, 0);
        manager.executeStatement(st1, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT(), TransactionContext.NO_TRANSACTION);
        manager.waitForTablespace("tblspace1", 10000);
        execute(manager, "CREATE TABLE tblspace1.tsql (k1 string primary key,n1 int,s1 string)", Collections.emptyList());
        assertEquals(1, executeUpdate(manager, "INSERT INTO tblspace1.tsql(k1,n1) values(?,?)", Arrays.asList("mykey", Integer.valueOf(1))).getUpdateCount());
        assertEquals(1, executeUpdate(manager, "INSERT INTO tblspace1.tsql(k1,n1) values(?,?)", Arrays.asList("mykey2", Integer.valueOf(2))).getUpdateCount());
        assertEquals(1, executeUpdate(manager, "INSERT INTO tblspace1.tsql(k1,n1) values(?,?)", Arrays.asList("mykey3", Integer.valueOf(3))).getUpdateCount());
        assertEquals(1, executeUpdate(manager, "INSERT INTO tblspace1.tsql(k1) values(?)", Arrays.asList("mykey4")).getUpdateCount());
        // scan performed at "scan time"
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 1", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(1, result.size());
            assertEquals(RawString.of("mykey"), result.get(0).get("k1"));
        }
        if (manager.getPlanner() instanceof SQLPlanner) {
            try (DataScanner scan1 = scan(manager, "SELECT TOP 1 * FROM tblspace1.tsql ORDER BY k1", Collections.emptyList())) {
                List<DataAccessor> result = scan1.consume();
                assertEquals(1, result.size());
                assertEquals(RawString.of("mykey"), result.get(0).get("k1"));
            }
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 1,1", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(1, result.size());
            assertEquals(RawString.of("mykey2"), result.get(0).get("k1"));
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 1,2", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(2, result.size());
            assertEquals(RawString.of("mykey2"), result.get(0).get("k1"));
            assertEquals(RawString.of("mykey3"), result.get(1).get("k1"));
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 10", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(4, result.size());
            assertEquals(RawString.of("mykey"), result.get(0).get("k1"));
            assertEquals(RawString.of("mykey2"), result.get(1).get("k1"));
            assertEquals(RawString.of("mykey3"), result.get(2).get("k1"));
            assertEquals(RawString.of("mykey4"), result.get(3).get("k1"));
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 10,10", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(0, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 4,10", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(0, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql ORDER BY k1 LIMIT 3,10", Collections.emptyList())) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(1, result.size());
            assertEquals(RawString.of("mykey4"), result.get(0).get("k1"));
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql LIMIT 3", Collections.emptyList(), 2, TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(2, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql LIMIT ?", Arrays.asList(3), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(3, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql LIMIT 1,2", Collections.emptyList(), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(2, result.size());
        }
        if (manager.getPlanner() instanceof CalcitePlanner) {
            try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql LIMIT ?,?", Arrays.asList(1, 2), TransactionContext.NO_TRANSACTION)) {
                List<DataAccessor> result = scan1.consume();
                assertEquals(2, result.size());
            }
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql " + "WHERE k1 <> ? LIMIT ?", Arrays.asList("aaa", 3), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(3, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql " + "WHERE k1 <> ? LIMIT 2,?", Arrays.asList("aaa", 3), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(2, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql " + "WHERE k1 <> ? ORDER BY k1 LIMIT ?", Arrays.asList("aaa", 3), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(3, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT k1, count(*) FROM tblspace1.tsql " + "WHERE k1 <> ? GROUP BY k1 ORDER BY k1 LIMIT ?", Arrays.asList("aaa", 3), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(3, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql LIMIT ?", Arrays.asList(0), TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(4, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql LIMIT ?", Collections.emptyList(), TransactionContext.NO_TRANSACTION)) {
            fail();
        } catch (MissingJDBCParameterException err) {
            assertEquals(1, err.getIndex());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql " + "ORDER BY k1 LIMIT 3", Collections.emptyList(), 5, TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(3, result.size());
        }
        try (DataScanner scan1 = scan(manager, "SELECT * FROM tblspace1.tsql " + "ORDER BY k1 ", Collections.emptyList(), 2, TransactionContext.NO_TRANSACTION)) {
            List<DataAccessor> result = scan1.consume();
            assertEquals(2, result.size());
        }
    }
}
Also used : CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) DataScanner(herddb.model.DataScanner) MissingJDBCParameterException(herddb.model.MissingJDBCParameterException) MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) DataAccessor(herddb.utils.DataAccessor) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) CalcitePlanner(herddb.sql.CalcitePlanner) RawString(herddb.utils.RawString) SQLPlanner(herddb.sql.SQLPlanner) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) Test(org.junit.Test)

Aggregations

MemoryCommitLogManager (herddb.mem.MemoryCommitLogManager)2 MemoryDataStorageManager (herddb.mem.MemoryDataStorageManager)2 MemoryMetadataStorageManager (herddb.mem.MemoryMetadataStorageManager)2 MissingJDBCParameterException (herddb.model.MissingJDBCParameterException)2 CreateTableSpaceStatement (herddb.model.commands.CreateTableSpaceStatement)2 SQLPlanner (herddb.sql.SQLPlanner)2 RawString (herddb.utils.RawString)2 Test (org.junit.Test)2 DataScanner (herddb.model.DataScanner)1 CalcitePlanner (herddb.sql.CalcitePlanner)1 DataAccessor (herddb.utils.DataAccessor)1