[ 
https://issues.apache.org/jira/browse/FLINK-28741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jing Zhang updated FLINK-28741:
-------------------------------
    Description: 
Using hive dialect to insert a string 'false' to boolean column, the result is 
true. It seems to treat all non-empty string as true.

The error could be reproduced in the following ITCase.
{code:java}
@Test
public void testUnExpectedResult() throws ExecutionException, 
InterruptedException {
    HiveModule hiveModule = new HiveModule(hiveCatalog.getHiveVersion());
    CoreModule coreModule = CoreModule.INSTANCE;
    for (String loaded : tableEnv.listModules()) {
        tableEnv.unloadModule(loaded);
    }
    tableEnv.loadModule("hive", hiveModule);
    tableEnv.loadModule("core", coreModule);
// create source table
    tableEnv.executeSql(
            "CREATE TABLE test_table (params string) PARTITIONED BY (`p_date` 
string)");
// prepare a data which value is 'false'
    tableEnv.executeSql("insert overwrite test_table partition(p_date = 
'20220612') values ('false')")
            .await();
// create target table which only contain one boolean column 
    tableEnv.executeSql(
            "CREATE TABLE target_table (flag boolean) PARTITIONED BY (`p_date` 
string)");
// 
    tableEnv.executeSql(
            "insert overwrite table target_table partition(p_date = '20220724') 
"
                    + "SELECT params FROM test_table WHERE 
p_date='20220612'").await();
    TableImpl flinkTable =
            (TableImpl) tableEnv.sqlQuery("select flag from target_table where 
p_date = '20220724'");
   List<Row> results = 
CollectionUtil.iteratorToList(flinkTable.execute().collect());
    assertEquals(
            "[false]", results.toString());
} {code}
 

  was:
Using hive dialect to insert a string 'false' to boolean column, the result is 
true.

The error could be reproduced in the following ITCase.
{code:java}
@Test
public void testUnExpectedResult() throws ExecutionException, 
InterruptedException {
    HiveModule hiveModule = new HiveModule(hiveCatalog.getHiveVersion());
    CoreModule coreModule = CoreModule.INSTANCE;
    for (String loaded : tableEnv.listModules()) {
        tableEnv.unloadModule(loaded);
    }
    tableEnv.loadModule("hive", hiveModule);
    tableEnv.loadModule("core", coreModule);
// create source table
    tableEnv.executeSql(
            "CREATE TABLE test_table (params string) PARTITIONED BY (`p_date` 
string)");
// prepare a data which value is 'false'
    tableEnv.executeSql("insert overwrite test_table partition(p_date = 
'20220612') values ('false')")
            .await();
// create target table which only contain one boolean column 
    tableEnv.executeSql(
            "CREATE TABLE target_table (flag boolean) PARTITIONED BY (`p_date` 
string)");
// 
    tableEnv.executeSql(
            "insert overwrite table target_table partition(p_date = '20220724') 
"
                    + "SELECT params FROM test_table WHERE 
p_date='20220612'").await();
    TableImpl flinkTable =
            (TableImpl) tableEnv.sqlQuery("select flag from target_table where 
p_date = '20220724'");
   List<Row> results = 
CollectionUtil.iteratorToList(flinkTable.execute().collect());
    assertEquals(
            "[false]", results.toString());
} {code}
 


> Unexpected result if insert 'false' to boolean column
> -----------------------------------------------------
>
>                 Key: FLINK-28741
>                 URL: https://issues.apache.org/jira/browse/FLINK-28741
>             Project: Flink
>          Issue Type: Bug
>          Components: Connectors / Hive
>    Affects Versions: 1.15.0, 1.15.1
>            Reporter: Jing Zhang
>            Priority: Major
>
> Using hive dialect to insert a string 'false' to boolean column, the result 
> is true. It seems to treat all non-empty string as true.
> The error could be reproduced in the following ITCase.
> {code:java}
> @Test
> public void testUnExpectedResult() throws ExecutionException, 
> InterruptedException {
>     HiveModule hiveModule = new HiveModule(hiveCatalog.getHiveVersion());
>     CoreModule coreModule = CoreModule.INSTANCE;
>     for (String loaded : tableEnv.listModules()) {
>         tableEnv.unloadModule(loaded);
>     }
>     tableEnv.loadModule("hive", hiveModule);
>     tableEnv.loadModule("core", coreModule);
> // create source table
>     tableEnv.executeSql(
>             "CREATE TABLE test_table (params string) PARTITIONED BY (`p_date` 
> string)");
> // prepare a data which value is 'false'
>     tableEnv.executeSql("insert overwrite test_table partition(p_date = 
> '20220612') values ('false')")
>             .await();
> // create target table which only contain one boolean column 
>     tableEnv.executeSql(
>             "CREATE TABLE target_table (flag boolean) PARTITIONED BY 
> (`p_date` string)");
> // 
>     tableEnv.executeSql(
>             "insert overwrite table target_table partition(p_date = 
> '20220724') "
>                     + "SELECT params FROM test_table WHERE 
> p_date='20220612'").await();
>     TableImpl flinkTable =
>             (TableImpl) tableEnv.sqlQuery("select flag from target_table 
> where p_date = '20220724'");
>    List<Row> results = 
> CollectionUtil.iteratorToList(flinkTable.execute().collect());
>     assertEquals(
>             "[false]", results.toString());
> } {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to