==== ---- 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 ====