/*
* Copyright (c) 2004, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.test.jdbc42;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.fail;
import org.postgresql.PGProperty;
import org.postgresql.test.TestUtil;
import org.hamcrest.CoreMatchers;
import org.junit.After;
import org.junit.Test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class CustomizeDefaultFetchSizeTest {
private Connection connection;
@After
public void tearDown() throws Exception {
if (connection != null) {
TestUtil.closeDB(connection);
}
}
@Test
public void testSetPredefineDefaultFetchSizeOnStatement() throws Exception {
final int waitFetchSize = 13;
Properties properties = new Properties();
PGProperty.DEFAULT_ROW_FETCH_SIZE.set(properties, waitFetchSize);
connection = TestUtil.openDB(properties);
Statement statement = connection.createStatement();
int resultFetchSize = statement.getFetchSize();
statement.close();
assertThat(
"PGProperty.DEFAULT_ROW_FETCH_SIZE should be propagate to Statement that was create from connection "
+ "on that define it parameter",
resultFetchSize, CoreMatchers.equalTo(waitFetchSize));
}
@Test
public void testSetPredefineDefaultFetchSizeOnPreparedStatement() throws Exception {
final int waitFetchSize = 14;
Properties properties = new Properties();
PGProperty.DEFAULT_ROW_FETCH_SIZE.set(properties, waitFetchSize);
connection = TestUtil.openDB(properties);
CallableStatement statement = connection.prepareCall("{ call unnest(array[1, 2, 3, 5])}");
int resultFetchSize = statement.getFetchSize();
assertThat(
"PGProperty.DEFAULT_ROW_FETCH_SIZE should be propagate to CallableStatement that was create from connection "
+ "on that define it parameter",
resultFetchSize, CoreMatchers.equalTo(waitFetchSize));
}
@Test(expected = SQLException.class)
public void testNotAvailableSpecifyNegativeFetchSize() throws Exception {
Properties properties = new Properties();
PGProperty.DEFAULT_ROW_FETCH_SIZE.set(properties, Integer.MIN_VALUE);
connection = TestUtil.openDB(properties);
fail(
"On step initialize connection we know about not valid parameter PGProperty.DEFAULT_ROW_FETCH_SIZE they can't be negative, "
+ "so we should throw correspond exception about it rather than fall with exception in runtime for example during create statement");
}
}