use of org.h2.jaqu.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();
}
use of org.h2.jaqu.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);
}
use of org.h2.jaqu.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))");
}
use of org.h2.jaqu.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();
}
}
use of org.h2.jaqu.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);
}
}
Aggregations