Skip to content

Commit 5e3e7d0

Browse files
committed
fix short conversion
1 parent 6a9191d commit 5e3e7d0

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandler.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.google.cloud.bigquery.StandardSQLTypeName;
2222
import com.google.cloud.bigquery.exception.BigQueryJdbcException;
2323
import com.google.cloud.bigquery.exception.BigQueryJdbcSqlFeatureNotSupportedException;
24+
import java.math.BigInteger;
2425
import java.sql.SQLException;
2526
import java.util.ArrayList;
2627

@@ -59,6 +60,16 @@ QueryJobConfiguration.Builder configureParameters(
5960

6061
Object parameterValue = getParameter(i);
6162
StandardSQLTypeName sqlType = getSqlType(i);
63+
if (parameterValue != null) {
64+
if (sqlType == StandardSQLTypeName.INT64
65+
&& (parameterValue instanceof Short
66+
|| parameterValue instanceof Byte
67+
|| parameterValue instanceof BigInteger)) {
68+
parameterValue = ((Number) parameterValue).longValue();
69+
} else if (sqlType == StandardSQLTypeName.FLOAT64 && parameterValue instanceof Float) {
70+
parameterValue = ((Number) parameterValue).doubleValue();
71+
}
72+
}
6273
LOG.finest(
6374
"Parameter %s of type %s at index %s added to QueryJobConfiguration",
6475
parameterValue, sqlType, i);

java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandlerTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static org.junit.jupiter.api.Assertions.assertEquals;
2020
import static org.junit.jupiter.api.Assertions.assertNotNull;
2121

22+
import com.google.cloud.bigquery.QueryJobConfiguration;
2223
import com.google.cloud.bigquery.StandardSQLTypeName;
2324
import com.google.cloud.bigquery.jdbc.BigQueryParameterHandler.BigQueryStatementParameterType;
2425
import org.junit.jupiter.api.Test;
@@ -139,4 +140,20 @@ public void testGetSetParameterByIndex() throws Exception {
139140
assertEquals(String.class, paramHandler.getType(2));
140141
assertEquals(StandardSQLTypeName.STRING, paramHandler.getSqlType(2));
141142
}
143+
144+
@Test
145+
public void testConfigureParametersWidenNumericTypes() throws Exception {
146+
BigQueryParameterHandler paramHandler = new BigQueryParameterHandler(3);
147+
paramHandler.setParameter(1, (short) 5, Short.class);
148+
paramHandler.setParameter(2, (byte) 10, Byte.class);
149+
paramHandler.setParameter(3, 3.14f, Float.class);
150+
151+
QueryJobConfiguration.Builder builder = QueryJobConfiguration.newBuilder("SELECT 1");
152+
paramHandler.configureParameters(builder);
153+
154+
QueryJobConfiguration config = builder.build();
155+
assertEquals(3, config.getPositionalParameters().size());
156+
assertEquals("5", config.getPositionalParameters().get(0).getValue());
157+
assertEquals("10", config.getPositionalParameters().get(1).getValue());
158+
}
142159
}

0 commit comments

Comments
 (0)