io.vertx.ext.jdbc.impl.actions.StreamQuery Maven / Gradle / Ivy
/*
* Copyright (c) 2011-2014 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.vertx.ext.jdbc.impl.actions;
import io.vertx.core.impl.ContextInternal;
import io.vertx.core.impl.TaskQueue;
import io.vertx.core.json.JsonArray;
import io.vertx.ext.sql.SQLOptions;
import io.vertx.ext.sql.SQLRowStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author Paulo Lopes
*/
public class StreamQuery extends AbstractJDBCAction {
private static final int DEFAULT_ROW_STREAM_FETCH_SIZE = 128;
private final ContextInternal ctx;
private final String sql;
private final JsonArray in;
private final TaskQueue statementsQueue;
public StreamQuery(JDBCStatementHelper helper, SQLOptions options, ContextInternal ctx, TaskQueue statementsQueue, String sql, JsonArray in) {
super(helper, options);
this.ctx = ctx;
this.sql = sql;
this.in = in;
this.statementsQueue = statementsQueue;
}
@Override
public SQLRowStream execute(Connection conn) throws SQLException {
PreparedStatement st = null;
try {
st = conn.prepareStatement(sql);
// apply statement options
applyStatementOptions(st);
fillStatement(st, in);
ResultSet rs = null;
try {
rs = st.executeQuery();
final int fetchSize;
if (options != null && options.getFetchSize() > 0) {
fetchSize = options.getFetchSize();
} else {
fetchSize = DEFAULT_ROW_STREAM_FETCH_SIZE;
}
return new JDBCSQLRowStream(ctx, this.statementsQueue, st, rs, helper.getDecoder(), fetchSize);
} catch (SQLException e) {
if (rs != null) {
rs.close();
}
throw e;
}
} catch (SQLException e) {
if (st != null) {
st.close();
}
throw e;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy