| ==== |
| ---- QUERY |
| # Test that we properly write null values to text tables. |
| insert overwrite table nullinsert |
| select NULL, "", "NULL", "\\N", NULL from alltypes limit 1 |
| ---- SETUP |
| RESET nullinsert |
| ---- RESULTS |
| : 1 |
| ==== |
| ---- QUERY |
| select * from nullinsert |
| ---- RESULTS |
| 'NULL','','NULL','\\N',NULL |
| ---- TYPES |
| string, string, string, string, int |
| ==== |
| ---- QUERY |
| select * from nullinsert_alt |
| ---- SETUP |
| RESET nullinsert_alt |
| ---- RESULTS |
| '\\N,,NULL,\\\\N,\\N' |
| ---- TYPES |
| string |
| ==== |
| ---- QUERY |
| # Test NULL partition keys using static partition insert. Both partitions keys are NULL. |
| insert overwrite table alltypesinsert |
| partition(year=NULL, month=NULL) |
| select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, |
| float_col, double_col, date_string_col, string_col, timestamp_col |
| from alltypessmall |
| where year=2009 and month=4 |
| ---- SETUP |
| DROP PARTITIONS alltypesinsert |
| ---- RESULTS |
| year=__HIVE_DEFAULT_PARTITION__/month=__HIVE_DEFAULT_PARTITION__/: 25 |
| ==== |
| ---- QUERY |
| # Verify contents of alltypesinsert. |
| select count(*) from alltypesinsert where year is null and month is null |
| ---- RESULTS |
| 25 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Verify that dropping NULL partitions works in the SETUP section. |
| select * from alltypesinsert |
| ---- SETUP |
| DROP PARTITIONS alltypesinsert |
| ---- RESULTS |
| ---- TYPES |
| int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int |
| ==== |
| ---- QUERY |
| # Test NULL partition keys using static partition insert. Year partition key is NULL. |
| insert overwrite table alltypesinsert |
| partition(year=NULL, month=10) |
| select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, |
| float_col, double_col, date_string_col, string_col, timestamp_col |
| from alltypessmall |
| where year=2009 and month=4 |
| ---- SETUP |
| DROP PARTITIONS alltypesinsert |
| ---- RESULTS |
| year=__HIVE_DEFAULT_PARTITION__/month=10/: 25 |
| ==== |
| ---- QUERY |
| # Verify contents of alltypesinsert. |
| select count(*) from alltypesinsert where year is null and month=10 |
| ---- RESULTS |
| 25 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Test NULL partition keys using dynamic partition insert. Month partition key is NULL. |
| insert overwrite table alltypesinsert |
| partition(year=2008, month=NULL) |
| select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, |
| float_col, double_col, date_string_col, string_col, timestamp_col |
| from alltypessmall |
| where year=2009 and month=4 |
| ---- SETUP |
| DROP PARTITIONS alltypesinsert |
| ---- RESULTS |
| year=2008/month=__HIVE_DEFAULT_PARTITION__/: 25 |
| ==== |
| ---- QUERY |
| # Verify contents of alltypesinsert. |
| select count(*) from alltypesinsert where year=2008 and month is null |
| ---- RESULTS |
| 25 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Test NULL partition keys using dynamic partition insert. |
| insert overwrite table alltypesinsert |
| partition(year, month) |
| select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, |
| float_col, double_col, date_string_col, string_col, timestamp_col, |
| cast(if(bool_col, NULL, 2007) as int) as year, cast(if(tinyint_col % 3 = 0, NULL, 6) as int) as month |
| from alltypessmall |
| where year=2009 and month=4 |
| ---- RESULTS: VERIFY_IS_EQUAL_SORTED |
| year=2007/month=6/: 8 |
| year=2007/month=__HIVE_DEFAULT_PARTITION__/: 5 |
| year=__HIVE_DEFAULT_PARTITION__/month=6/: 7 |
| year=__HIVE_DEFAULT_PARTITION__/month=__HIVE_DEFAULT_PARTITION__/: 5 |
| ==== |
| ---- QUERY |
| # Verify contents of each new partition in alltypesinsert. |
| select count(*) from alltypesinsert where year=2007 and month=6 |
| ---- RESULTS |
| 8 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Verify contents of each new partition in alltypesinsert. |
| select count(*) from alltypesinsert where year=2007 and month is null |
| ---- RESULTS |
| 5 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Verify contents of each new partition in alltypesinsert. |
| select count(*) from alltypesinsert where year is null and month=6 |
| ---- RESULTS |
| 7 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Verify contents of each new partition in alltypesinsert. |
| select count(*) from alltypesinsert where year is null and month is null |
| ---- RESULTS |
| 5 |
| ---- TYPES |
| bigint |
| ==== |
| ---- QUERY |
| # Insert nulls and non-null values into table with |
| # custom table property serialization.null.format='xyz' |
| insert overwrite nullformat_custom |
| select 1, NULL, NULL, NULL, NULL union all |
| select 2, true, "", 1, 1 union all |
| select 3, false, "NULL", 2, 2 union all |
| select 4, false, "xyz", 3, 3 union all |
| select 5, false, "xyzbar", 4, 4 |
| ---- RESULTS |
| : 5 |
| ==== |
| ---- QUERY |
| # Test correct interpretation of NULLs with custom |
| # table property serialization.null.format='xyz' |
| select id, a, b, b is null, c, d from nullformat_custom order by id limit 10 |
| ---- RESULTS |
| 1,NULL,'NULL',true,NULL,NULL |
| 2,true,'',false,1,1 |
| 3,false,'NULL',false,2,2 |
| 4,false,'NULL',true,3,3 |
| 5,false,'xyzbar',false,4,4 |
| ---- TYPES |
| int, boolean, string, boolean, int, double |
| ==== |