Skip to content

Conversation

@zhulipeng
Copy link
Contributor

@zhulipeng zhulipeng commented May 27, 2020

What changes were proposed in this pull request?

We should use dataType.catalogString to unified the data type mismatch message.
Before:

spark-sql> create table SPARK_31834(a int) using parquet;
spark-sql> insert into SPARK_31834 select '1';
Error in query: Cannot write incompatible data to table '`default`.`spark_31834`':
- Cannot safely cast 'a': StringType to IntegerType;

After:

spark-sql> create table SPARK_31834(a int) using parquet;
spark-sql> insert into SPARK_31834 select '1';
Error in query: Cannot write incompatible data to table '`default`.`spark_31834`':
- Cannot safely cast 'a': string to int;

How was this patch tested?

UT.

@zhulipeng zhulipeng changed the title [SPARK-22893][SQL]Improve error message for incompatible data types [SPARK-31834][SQL]Improve error message for incompatible data types May 27, 2020
@wangyum
Copy link
Member

wangyum commented May 28, 2020

ok to test.

@SparkQA
Copy link

SparkQA commented May 28, 2020

Test build #123216 has finished for PR 28654 at commit 46665cd.

  • This patch fails due to an unknown error code, -9.
  • This patch merges cleanly.
  • This patch adds no public classes.

@wangyum
Copy link
Member

wangyum commented May 28, 2020

retest this please

@SparkQA
Copy link

SparkQA commented May 28, 2020

Test build #123218 has finished for PR 28654 at commit 46665cd.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

case (w: AtomicType, r: AtomicType) if storeAssignmentPolicy == STRICT =>
if (!Cast.canUpCast(w, r)) {
addError(s"Cannot safely cast '$context': $w to $r")
addError(s"Cannot safely cast '$context': ${w.simpleString} to ${r.simpleString}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: simpleString -> catalogString?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for catalogString :

TypeCheckResult.TypeCheckFailure(
s"cannot cast ${child.dataType.catalogString} to ${dataType.catalogString}")

case (w: AtomicType, r: AtomicType) if storeAssignmentPolicy == ANSI =>
if (!Cast.canANSIStoreAssign(w, r)) {
addError(s"Cannot safely cast '$context': $w to $r")
addError(s"Cannot safely cast '$context': ${w.simpleString} to ${r.simpleString}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

@SparkQA
Copy link

SparkQA commented May 28, 2020

Test build #123236 has finished for PR 28654 at commit 77c7eef.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

Copy link
Member

@HyukjinKwon HyukjinKwon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM too

@SparkQA
Copy link

SparkQA commented Jun 2, 2020

Test build #123415 has finished for PR 28654 at commit 9c4b485.

  • This patch fails due to an unknown error code, -9.
  • This patch merges cleanly.
  • This patch adds no public classes.

@maropu
Copy link
Member

maropu commented Jun 2, 2020

retest this please

@SparkQA
Copy link

SparkQA commented Jun 2, 2020

Test build #123423 has finished for PR 28654 at commit 9c4b485.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@HyukjinKwon
Copy link
Member

Merged to master and branch-3.0.

HyukjinKwon pushed a commit that referenced this pull request Jun 2, 2020
### What changes were proposed in this pull request?
We should use dataType.catalogString to unified the data type mismatch message.
Before:
```sql
spark-sql> create table SPARK_31834(a int) using parquet;
spark-sql> insert into SPARK_31834 select '1';
Error in query: Cannot write incompatible data to table '`default`.`spark_31834`':
- Cannot safely cast 'a': StringType to IntegerType;
```

After:
```sql
spark-sql> create table SPARK_31834(a int) using parquet;
spark-sql> insert into SPARK_31834 select '1';
Error in query: Cannot write incompatible data to table '`default`.`spark_31834`':
- Cannot safely cast 'a': string to int;
```

### How was this patch tested?
UT.

Closes #28654 from lipzhu/SPARK-31834.

Authored-by: lipzhu <[email protected]>
Signed-off-by: HyukjinKwon <[email protected]>
(cherry picked from commit d79a8a8)
Signed-off-by: HyukjinKwon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants