Когда значение BigDecimal вставляется в столбец NUMERIC с помощью драйвера Simba JDBC для BigQuery, почему числовая точность теряется? - PullRequest
0 голосов
/ 08 июня 2019

При вставке значения BigDecimal в столбец NUMERIC с использованием подготовленного оператора JDBC с переменной связывания десятичная дробь теряется. С другой стороны, переменная связывания не используется, десятичная дробь сохраняется.

create table DS_TEST.BIGDECIMAL_TEST (NUMERIC_COL numeric)
String connectionString = "jdbc:bigquery://${host}:${port};ProjectId=${projectId};OAuthType=${OAuthType};OAuthServiceAcctEmail=${OAuthServiceAcctEmail};OAuthPvtKeyPath=${OAuthPvtKeyPath}"
Class.forName("com.simba.googlebigquery.jdbc42.Driver").newInstance()
Connection connection = DriverManager.getConnection(connectionString)

// insert statement without bind variable
PreparedStatement preparedStatement = connection.prepareStatement
    ("insert into `${projectId}`.DS_TEST.BIGDECIMAL_TEST (NUMERIC_COL) values (123.45)")
preparedStatement.executeUpdate()

// insert statement using bind variable
preparedStatement = connection.prepareStatement
    ("insert into `${projectId}`.DS_TEST.BIGDECIMAL_TEST (NUMERIC_COL) values (?)")
preparedStatement.setBigDecimal(1, new BigDecimal("567.89")) 
preparedStatement.executeUpdate()
preparedStatement.close() 

Я ожидал выхода:

+-------------+
| NUMERIC_COL |
+-------------+
| 123.45      |
| 567.89      |
+-------------+

но фактический результат равен

+-------------+
| NUMERIC_COL |
+-------------+
| 123.45      |
| 567         |
+-------------+

Это ошибка или я что-то упустил?

...