Hi,

I filed a jira: https://issues.apache.org/jira/browse/SPARK-26540

On Thu, Jan 3, 2019 at 10:04 PM Takeshi Yamamuro <linguin....@gmail.com>
wrote:

> Hi,
>
> I checked that v2.2/v2.3/v2.4/master had the same issue, so can you file a
> jira?
> I looked over the related code and then I think we need more logics to
> handle this issue;
>
> https://github.com/apache/spark/blob/2a30deb85ae4e42c5cbc936383dd5c3970f4a74f/sql/core/src/main/scala/org/apache/spark/sql/jdbc/PostgresDialect.scala#L41
>
>
> On Tue, Jan 1, 2019 at 12:13 AM Alexey <ale...@i.ua> wrote:
>
>> Hi,
>>
>> I came across strange behavior when dealing with postgres columns of type
>> numeric[] using Spark 2.3.2, PostgreSQL 10.4, 9.6.9.
>> Consider the following table definition:
>>
>> create table test1
>> (
>>    v  numeric[],
>>    d  numeric
>> );
>>
>> insert into test1 values('{1111.222,2222.332}', 222.4555);
>>
>> When reading the table into a Dataframe, I get the following schema:
>>
>> root
>>  |-- v: array (nullable = true)
>>  |    |-- element: decimal(0,0) (containsNull = true)
>>  |-- d: decimal(38,18) (nullable = true)
>>
>> Notice that for both columns precision and scale were not specified, but
>> in case of the array element I got both set to 0, while in the other case
>> defaults were set.
>>
>> Later, when I try to read the Dataframe, I get the following error:
>>
>> java.lang.IllegalArgumentException: requirement failed: Decimal precision
>> 4 exceeds max precision 0
>>         at scala.Predef$.require(Predef.scala:224)
>>         at org.apache.spark.sql.types.Decimal.set(Decimal.scala:114)
>>         at org.apache.spark.sql.types.Decimal$.apply(Decimal.scala:453)
>>         at
>> org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$16$$anonfun$apply$6$$anonfun$apply$7.apply(JdbcUtils.scala:474)
>>         ...
>>
>> I would expect to get array elements of type decimal(38,18) and no error
>> when reading in this case.
>> Should this be considered a bug? Is there a workaround other than
>> changing the column array type definition to include explicit precision and
>> scale?
>>
>> Best regards,
>> Alexey
>>
>> -- реклама -----------------------------------------------------------
>> Поторопись зарегистрировать самый короткий почтовый адрес @i.ua
>> https://mail.i.ua/reg - и получи 1Gb для хранения писем
>>
>> ---------------------------------------------------------------------
>> To unsubscribe e-mail: user-unsubscr...@spark.apache.org
>>
>>
>
> --
> ---
> Takeshi Yamamuro
>


-- 
---
Takeshi Yamamuro

Reply via email to