| ==== |
| ---- QUERY |
| # No property or query option set, scanning binary columns will throw an exception. |
| # Refresh is needed for serdeproperties changes to take effect, see IMPALA-13748. |
| alter table binary_tbl unset serdeproperties ('json.binary.format'); |
| refresh binary_tbl; |
| set json_binary_format=none; |
| select id, string_col, cast(binary_col as string) from binary_tbl |
| ---- CATCH |
| No valid serde properties 'json.binary.format' or query option 'json_binary_format' ('base64' or 'rawstring') provided for scanning binary column of json table '$DATABASE.binary_tbl'. |
| ==== |
| ---- QUERY |
| # No binary column scanned, no exception thrown. |
| set json_binary_format=none; |
| select id, string_col from binary_tbl |
| ---- TYPES |
| INT, STRING |
| ---- RESULTS: |
| 1,'ascii' |
| 2,'ascii' |
| 3,'null' |
| 4,'empty' |
| 5,'valid utf8' |
| 6,'valid utf8' |
| 7,'invalid utf8' |
| 8,'invalid utf8' |
| ==== |
| ---- QUERY |
| # No property set but query option set, scanning binary columns will use the query option. |
| set json_binary_format=rawstring; |
| select id, string_col, cast(binary_col as string) from binary_tbl |
| ---- TYPES |
| INT, STRING, STRING |
| ---- RESULTS: |
| 1,'ascii','YmluYXJ5MQ==' |
| 2,'ascii','YmluYXJ5Mg==' |
| 3,'null','NULL' |
| 4,'empty','' |
| 5,'valid utf8','w6FydsOtenTFsXLFkXTDvGvDtnJmw7pyw7M=' |
| 6,'valid utf8','5L2g5aW9aGVsbG8=' |
| 7,'invalid utf8','AP8A/w==' |
| 8,'invalid utf8','/0QzIhEA' |
| ==== |
| ---- QUERY |
| # If the property is set, it takes precedence over the query option, even if the value is |
| # invalid. |
| alter table binary_tbl set serdeproperties ('json.binary.format'='foobar'); |
| refresh binary_tbl; |
| set json_binary_format=rawstring; |
| select id, string_col, cast(binary_col as string) from binary_tbl |
| ---- CATCH |
| Invalid serde property 'json.binary.format' for scanning binary column of json table '$DATABASE.binary_tbl'. Valid values are 'base64' or 'rawstring'. |
| ==== |
| ---- QUERY |
| # Setting the property to 'base64', scanning binary columns will use base64 encoding, |
| # rather than the query option 'rawstring'. |
| alter table binary_tbl set serdeproperties ('json.binary.format'='base64'); |
| refresh binary_tbl; |
| set json_binary_format=rawstring; |
| select id, string_col, base64encode(cast(binary_col as string)) from binary_tbl |
| ---- TYPES |
| INT, STRING, STRING |
| ---- RESULTS: |
| 1,'ascii','YmluYXJ5MQ==' |
| 2,'ascii','YmluYXJ5Mg==' |
| 3,'null','NULL' |
| 4,'empty','' |
| 5,'valid utf8','w6FydsOtenTFsXLFkXTDvGvDtnJmw7pyw7M=' |
| 6,'valid utf8','5L2g5aW9aGVsbG8=' |
| 7,'invalid utf8','AP8A/w==' |
| 8,'invalid utf8','/0QzIhEA' |
| ==== |
| ---- QUERY |
| # Unsetting the property and setting the query option to 'base64' will have the same |
| # effect. |
| alter table binary_tbl unset serdeproperties ('json.binary.format'); |
| refresh binary_tbl; |
| set json_binary_format=base64; |
| select id, string_col, base64encode(cast(binary_col as string)) from binary_tbl |
| ---- TYPES |
| INT, STRING, STRING |
| ---- RESULTS: |
| 1,'ascii','YmluYXJ5MQ==' |
| 2,'ascii','YmluYXJ5Mg==' |
| 3,'null','NULL' |
| 4,'empty','' |
| 5,'valid utf8','w6FydsOtenTFsXLFkXTDvGvDtnJmw7pyw7M=' |
| 6,'valid utf8','5L2g5aW9aGVsbG8=' |
| 7,'invalid utf8','AP8A/w==' |
| 8,'invalid utf8','/0QzIhEA' |
| ==== |
| ---- QUERY |
| # Test scanning multiple json tables with different binary column formats |
| # ('functional_json.binary_tbl' has 'base64'). |
| alter table binary_tbl set serdeproperties ('json.binary.format'='rawstring'); |
| refresh binary_tbl; |
| select r.id, cast(r.binary_col as string), base64encode(cast(b.binary_col as string)) |
| from binary_tbl r join functional_json.binary_tbl b using (id) |
| ---- TYPES |
| INT, STRING, STRING |
| ---- RESULTS: |
| 1,'YmluYXJ5MQ==','YmluYXJ5MQ==' |
| 2,'YmluYXJ5Mg==','YmluYXJ5Mg==' |
| 3,'NULL','NULL' |
| 4,'','' |
| 5,'w6FydsOtenTFsXLFkXTDvGvDtnJmw7pyw7M=','w6FydsOtenTFsXLFkXTDvGvDtnJmw7pyw7M=' |
| 6,'5L2g5aW9aGVsbG8=','5L2g5aW9aGVsbG8=' |
| 7,'AP8A/w==','AP8A/w==' |
| 8,'/0QzIhEA','/0QzIhEA' |
| ==== |