Search in sources :

Example 1 with Db

use of org.h2.test.db.Db in project ignite by apache.

the class IgniteH2Indexing method connectionForThread.

/**
 * Gets DB connection.
 *
 * @param schema Whether to set schema for connection or not.
 * @return DB connection.
 * @throws IgniteCheckedException In case of error.
 */
private Connection connectionForThread(@Nullable String schema) throws IgniteCheckedException {
    H2ConnectionWrapper c = connCache.get();
    if (c == null)
        throw new IgniteCheckedException("Failed to get DB connection for thread (check log for details).");
    if (schema != null && !F.eq(c.schema(), schema)) {
        Statement stmt = null;
        try {
            stmt = c.connection().createStatement();
            stmt.executeUpdate("SET SCHEMA " + H2Utils.withQuotes(schema));
            if (log.isDebugEnabled())
                log.debug("Set schema: " + schema);
            c.schema(schema);
        } catch (SQLException e) {
            throw new IgniteSQLException("Failed to set schema for DB connection for thread [schema=" + schema + "]", e);
        } finally {
            U.close(stmt, log);
        }
    }
    return c.connection();
}
Also used : IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SQLException(java.sql.SQLException) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException) PreparedStatement(java.sql.PreparedStatement) JdbcStatement(org.h2.jdbc.JdbcStatement) Statement(java.sql.Statement) GridSqlStatement(org.apache.ignite.internal.processors.query.h2.sql.GridSqlStatement) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException)

Example 2 with Db

use of org.h2.test.db.Db in project jdbi by jdbi.

the class TestOnDemandMethodBehavior method setUp.

@Before
public void setUp() throws Exception {
    when(mockExtensionFactory.accepts(UselessDao.class)).thenReturn(true);
    final JdbcDataSource ds = new JdbcDataSource() {

        private static final long serialVersionUID = 1L;

        @Override
        public Connection getConnection() throws SQLException {
            throw new UnsupportedOperationException();
        }
    };
    db = Jdbi.create(ds);
    db.registerExtension(mockExtensionFactory);
    onDemand = db.onDemand(UselessDao.class);
    anotherOnDemand = db.onDemand(UselessDao.class);
}
Also used : JdbcDataSource(org.h2.jdbcx.JdbcDataSource) Before(org.junit.Before)

Example 3 with Db

use of org.h2.test.db.Db in project jdbi by jdbi.

the class TestTransactional method setUp.

@Before
public void setUp() throws Exception {
    final JdbcDataSource ds = new JdbcDataSource() {

        private static final long serialVersionUID = 1L;

        @Override
        public Connection getConnection() throws SQLException {
            final Connection real = super.getConnection();
            return (Connection) Proxy.newProxyInstance(real.getClass().getClassLoader(), new Class<?>[] { Connection.class }, new TxnIsolationCheckingInvocationHandler(real));
        }
    };
    // in MVCC mode h2 doesn't shut down immediately on all connections closed, so need random db name
    ds.setURL(String.format("jdbc:h2:mem:%s;MVCC=TRUE", UUID.randomUUID()));
    db = Jdbi.create(ds);
    db.installPlugin(new SqlObjectPlugin());
    db.registerRowMapper(new SomethingMapper());
    handle = db.open();
    handle.execute("create table something (id int primary key, name varchar(100))");
}
Also used : SomethingMapper(org.jdbi.v3.core.mapper.SomethingMapper) JdbcDataSource(org.h2.jdbcx.JdbcDataSource) Connection(java.sql.Connection) Before(org.junit.Before)

Example 4 with Db

use of org.h2.test.db.Db in project rxjava2-jdbc by davidmoten.

the class DatabaseTest method testSelectConcurrencyTest.

@Test(timeout = 5000)
public void testSelectConcurrencyTest() throws InterruptedException, TimeoutException {
    debug();
    try {
        try (Database db = db(1)) {
            Scheduler scheduler = Schedulers.from(Executors.newFixedThreadPool(2));
            int n = 2;
            CountDownLatch latch = new CountDownLatch(n);
            AtomicInteger count = new AtomicInteger();
            for (int i = 0; i < n; i++) {
                // 
                db.select("select score from person where name=?").parameters("FRED", // 
                "JOSEPH").getAs(// 
                Integer.class).subscribeOn(// 
                scheduler).toList().doOnSuccess(x -> {
                    if (!x.equals(Lists.newArrayList(21, 34))) {
                        throw new RuntimeException("run broken");
                    }
                }).doOnSuccess(x -> {
                    count.incrementAndGet();
                    latch.countDown();
                }).doOnError(// 
                x -> latch.countDown()).subscribe();
                log.info("submitted " + i);
            }
            if (!latch.await(5000, TimeUnit.SECONDS)) {
                throw new TimeoutException("timeout");
            }
            assertEquals(n, count.get());
        }
    } finally {
        debug();
    }
}
Also used : MethodSorters(org.junit.runners.MethodSorters) Arrays(java.util.Arrays) Connection(java.sql.Connection) Time(java.sql.Time) Date(java.util.Date) ZonedDateTime(java.time.ZonedDateTime) Completable(io.reactivex.Completable) SQLRuntimeException(org.davidmoten.rx.jdbc.exceptions.SQLRuntimeException) PoolClosedException(org.davidmoten.rx.pool.PoolClosedException) LoggerFactory(org.slf4j.LoggerFactory) Scanner(java.util.Scanner) TimeoutException(java.util.concurrent.TimeoutException) ColumnIndexOutOfRangeException(org.davidmoten.rx.jdbc.exceptions.ColumnIndexOutOfRangeException) MoreColumnsRequestedThanExistException(org.davidmoten.rx.jdbc.exceptions.MoreColumnsRequestedThanExistException) JDBCBlobFile(org.hsqldb.jdbc.JDBCBlobFile) JDBCClobFile(org.hsqldb.jdbc.JDBCClobFile) NonBlockingConnectionPool(org.davidmoten.rx.jdbc.pool.NonBlockingConnectionPool) ByteArrayInputStream(java.io.ByteArrayInputStream) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ResultSet(java.sql.ResultSet) Level(org.apache.log4j.Level) DatabaseCreator(org.davidmoten.rx.jdbc.pool.DatabaseCreator) Schedulers(io.reactivex.schedulers.Schedulers) ZoneOffset(java.time.ZoneOffset) NamedParameterFoundButSqlDoesNotHaveNamesException(org.davidmoten.rx.jdbc.exceptions.NamedParameterFoundButSqlDoesNotHaveNamesException) Sets(com.github.davidmoten.guavamini.Sets) CannotForkTransactedConnection(org.davidmoten.rx.jdbc.exceptions.CannotForkTransactedConnection) GregorianCalendar(java.util.GregorianCalendar) QueryAnnotationMissingException(org.davidmoten.rx.jdbc.exceptions.QueryAnnotationMissingException) Pools(org.davidmoten.rx.jdbc.pool.Pools) Timestamp(java.sql.Timestamp) Set(java.util.Set) Reader(java.io.Reader) PreparedStatement(java.sql.PreparedStatement) Instant(java.time.Instant) Column(org.davidmoten.rx.jdbc.annotations.Column) FileNotFoundException(java.io.FileNotFoundException) Executors(java.util.concurrent.Executors) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) Index(org.davidmoten.rx.jdbc.annotations.Index) Assert.assertFalse(org.junit.Assert.assertFalse) CallableStatement(java.sql.CallableStatement) Optional(java.util.Optional) TestScheduler(io.reactivex.schedulers.TestScheduler) FixMethodOrder(org.junit.FixMethodOrder) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings) Types(java.sql.Types) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) AnnotationsNotFoundException(org.davidmoten.rx.jdbc.exceptions.AnnotationsNotFoundException) Tuple6(org.davidmoten.rx.jdbc.tuple.Tuple6) NamedParameterMissingException(org.davidmoten.rx.jdbc.exceptions.NamedParameterMissingException) Tuple7(org.davidmoten.rx.jdbc.tuple.Tuple7) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Tuple2(org.davidmoten.rx.jdbc.tuple.Tuple2) Tuple3(org.davidmoten.rx.jdbc.tuple.Tuple3) Tuple4(org.davidmoten.rx.jdbc.tuple.Tuple4) SQLSyntaxErrorException(java.sql.SQLSyntaxErrorException) Tuple5(org.davidmoten.rx.jdbc.tuple.Tuple5) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Lists(com.github.davidmoten.guavamini.Lists) Single(io.reactivex.Single) HashSet(java.util.HashSet) ColumnNotFoundException(org.davidmoten.rx.jdbc.exceptions.ColumnNotFoundException) SQLException(java.sql.SQLException) Calendar(java.util.Calendar) Scheduler(io.reactivex.Scheduler) Flowable(io.reactivex.Flowable) Observable(io.reactivex.Observable) TestSubscriber(io.reactivex.subscribers.TestSubscriber) Clob(java.sql.Clob) Query(org.davidmoten.rx.jdbc.annotations.Query) AutomappedInterfaceInaccessibleException(org.davidmoten.rx.jdbc.exceptions.AutomappedInterfaceInaccessibleException) Logger(org.slf4j.Logger) DatabaseType(org.davidmoten.rx.jdbc.pool.DatabaseType) TupleN(org.davidmoten.rx.jdbc.tuple.TupleN) Assert.assertTrue(org.junit.Assert.assertTrue) IOException(java.io.IOException) Test(org.junit.Test) Predicate(io.reactivex.functions.Predicate) Assert.assertNotEquals(org.junit.Assert.assertNotEquals) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) JdbcSQLException(org.h2.jdbc.JdbcSQLException) Ignore(org.junit.Ignore) Statement(java.sql.Statement) FileReader(java.io.FileReader) LogManager(org.apache.log4j.LogManager) Blob(java.sql.Blob) DelegatedConnection(org.davidmoten.rx.jdbc.internal.DelegatedConnection) Assert(org.junit.Assert) Assert.assertEquals(org.junit.Assert.assertEquals) InputStream(java.io.InputStream) SQLRuntimeException(org.davidmoten.rx.jdbc.exceptions.SQLRuntimeException) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) TestScheduler(io.reactivex.schedulers.TestScheduler) Scheduler(io.reactivex.Scheduler) CountDownLatch(java.util.concurrent.CountDownLatch) TimeoutException(java.util.concurrent.TimeoutException) Test(org.junit.Test)

Example 5 with Db

use of org.h2.test.db.Db in project rxjava2-jdbc by davidmoten.

the class DatabaseTest method testDelayedCallsAreNonBlocking.

@Test
public void testDelayedCallsAreNonBlocking() throws InterruptedException {
    List<String> list = new CopyOnWriteArrayList<String>();
    try (Database db = db(1)) {
        // 
        // 
        db.select("select score from person where name=?").parameter(// 
        "FRED").getAs(// 
        Integer.class).doOnNext(// 
        x -> Thread.sleep(1000)).subscribeOn(// 
        Schedulers.io()).subscribe();
        Thread.sleep(100);
        CountDownLatch latch = new CountDownLatch(1);
        // 
        db.select("select score from person where name=?").parameter(// 
        "FRED").getAs(// 
        Integer.class).doOnNext(// 
        x -> list.add("emitted")).doOnNext(// 
        x -> log.debug("emitted on " + Thread.currentThread().getName())).doOnNext(// 
        x -> latch.countDown()).subscribe();
        list.add("subscribed");
        assertTrue(latch.await(TIMEOUT_SECONDS, TimeUnit.SECONDS));
        assertEquals(Arrays.asList("subscribed", "emitted"), list);
    }
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MethodSorters(org.junit.runners.MethodSorters) Arrays(java.util.Arrays) Connection(java.sql.Connection) Time(java.sql.Time) Date(java.util.Date) ZonedDateTime(java.time.ZonedDateTime) Completable(io.reactivex.Completable) SQLRuntimeException(org.davidmoten.rx.jdbc.exceptions.SQLRuntimeException) PoolClosedException(org.davidmoten.rx.pool.PoolClosedException) LoggerFactory(org.slf4j.LoggerFactory) Scanner(java.util.Scanner) TimeoutException(java.util.concurrent.TimeoutException) ColumnIndexOutOfRangeException(org.davidmoten.rx.jdbc.exceptions.ColumnIndexOutOfRangeException) MoreColumnsRequestedThanExistException(org.davidmoten.rx.jdbc.exceptions.MoreColumnsRequestedThanExistException) JDBCBlobFile(org.hsqldb.jdbc.JDBCBlobFile) JDBCClobFile(org.hsqldb.jdbc.JDBCClobFile) NonBlockingConnectionPool(org.davidmoten.rx.jdbc.pool.NonBlockingConnectionPool) ByteArrayInputStream(java.io.ByteArrayInputStream) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ResultSet(java.sql.ResultSet) Level(org.apache.log4j.Level) DatabaseCreator(org.davidmoten.rx.jdbc.pool.DatabaseCreator) Schedulers(io.reactivex.schedulers.Schedulers) ZoneOffset(java.time.ZoneOffset) NamedParameterFoundButSqlDoesNotHaveNamesException(org.davidmoten.rx.jdbc.exceptions.NamedParameterFoundButSqlDoesNotHaveNamesException) Sets(com.github.davidmoten.guavamini.Sets) CannotForkTransactedConnection(org.davidmoten.rx.jdbc.exceptions.CannotForkTransactedConnection) GregorianCalendar(java.util.GregorianCalendar) QueryAnnotationMissingException(org.davidmoten.rx.jdbc.exceptions.QueryAnnotationMissingException) Pools(org.davidmoten.rx.jdbc.pool.Pools) Timestamp(java.sql.Timestamp) Set(java.util.Set) Reader(java.io.Reader) PreparedStatement(java.sql.PreparedStatement) Instant(java.time.Instant) Column(org.davidmoten.rx.jdbc.annotations.Column) FileNotFoundException(java.io.FileNotFoundException) Executors(java.util.concurrent.Executors) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) Index(org.davidmoten.rx.jdbc.annotations.Index) Assert.assertFalse(org.junit.Assert.assertFalse) CallableStatement(java.sql.CallableStatement) Optional(java.util.Optional) TestScheduler(io.reactivex.schedulers.TestScheduler) FixMethodOrder(org.junit.FixMethodOrder) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings) Types(java.sql.Types) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) AnnotationsNotFoundException(org.davidmoten.rx.jdbc.exceptions.AnnotationsNotFoundException) Tuple6(org.davidmoten.rx.jdbc.tuple.Tuple6) NamedParameterMissingException(org.davidmoten.rx.jdbc.exceptions.NamedParameterMissingException) Tuple7(org.davidmoten.rx.jdbc.tuple.Tuple7) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Tuple2(org.davidmoten.rx.jdbc.tuple.Tuple2) Tuple3(org.davidmoten.rx.jdbc.tuple.Tuple3) Tuple4(org.davidmoten.rx.jdbc.tuple.Tuple4) SQLSyntaxErrorException(java.sql.SQLSyntaxErrorException) Tuple5(org.davidmoten.rx.jdbc.tuple.Tuple5) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Lists(com.github.davidmoten.guavamini.Lists) Single(io.reactivex.Single) HashSet(java.util.HashSet) ColumnNotFoundException(org.davidmoten.rx.jdbc.exceptions.ColumnNotFoundException) SQLException(java.sql.SQLException) Calendar(java.util.Calendar) Scheduler(io.reactivex.Scheduler) Flowable(io.reactivex.Flowable) Observable(io.reactivex.Observable) TestSubscriber(io.reactivex.subscribers.TestSubscriber) Clob(java.sql.Clob) Query(org.davidmoten.rx.jdbc.annotations.Query) AutomappedInterfaceInaccessibleException(org.davidmoten.rx.jdbc.exceptions.AutomappedInterfaceInaccessibleException) Logger(org.slf4j.Logger) DatabaseType(org.davidmoten.rx.jdbc.pool.DatabaseType) TupleN(org.davidmoten.rx.jdbc.tuple.TupleN) Assert.assertTrue(org.junit.Assert.assertTrue) IOException(java.io.IOException) Test(org.junit.Test) Predicate(io.reactivex.functions.Predicate) Assert.assertNotEquals(org.junit.Assert.assertNotEquals) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) JdbcSQLException(org.h2.jdbc.JdbcSQLException) Ignore(org.junit.Ignore) Statement(java.sql.Statement) FileReader(java.io.FileReader) LogManager(org.apache.log4j.LogManager) Blob(java.sql.Blob) DelegatedConnection(org.davidmoten.rx.jdbc.internal.DelegatedConnection) Assert(org.junit.Assert) Assert.assertEquals(org.junit.Assert.assertEquals) InputStream(java.io.InputStream) CountDownLatch(java.util.concurrent.CountDownLatch) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Test(org.junit.Test)

Aggregations

Database (org.h2.engine.Database)70 Connection (java.sql.Connection)31 Statement (java.sql.Statement)20 Table (org.h2.table.Table)19 PreparedStatement (java.sql.PreparedStatement)18 ResultSet (java.sql.ResultSet)13 SQLException (java.sql.SQLException)13 Column (org.h2.table.Column)12 JdbcDataSource (org.h2.jdbcx.JdbcDataSource)9 StatementBuilder (org.h2.util.StatementBuilder)9 DbObject (org.h2.engine.DbObject)8 File (java.io.File)7 IOException (java.io.IOException)7 ArrayList (java.util.ArrayList)7 DbException (org.h2.message.DbException)7 Schema (org.h2.schema.Schema)7 Before (org.junit.Before)7 InputStream (java.io.InputStream)6 ExpressionColumn (org.h2.expression.ExpressionColumn)6 JdbcConnection (org.h2.jdbc.JdbcConnection)6