55 lines
1.6 KiB
SQL
55 lines
1.6 KiB
SQL
# name: test/sql/copy/parquet/kv_metadata.test
|
|
# group: [parquet]
|
|
|
|
require parquet
|
|
|
|
# Test basic roundtrip
|
|
statement ok
|
|
COPY (SELECT 1, 'foo') TO '__TEST_DIR__/kv_metadata_test.parquet' (FORMAT PARQUET, KV_METADATA {foo: 'bar', baz: 42, quz: '\xC3\xB6\xC3\xA4\xC3\xA5'::BLOB});
|
|
|
|
query II
|
|
SELECT key::VARCHAR, value::VARCHAR FROM parquet_kv_metadata('__TEST_DIR__/kv_metadata_test.parquet');
|
|
----
|
|
foo bar
|
|
baz 42
|
|
quz \xC3\xB6\xC3\xA4\xC3\xA5
|
|
|
|
query II
|
|
SELECT * FROM '__TEST_DIR__/kv_metadata_test.parquet'
|
|
----
|
|
1 foo
|
|
|
|
# Test decoding blobs
|
|
query II
|
|
SELECT key::VARCHAR, decode(value) FROM parquet_kv_metadata('__TEST_DIR__/kv_metadata_test.parquet') WHERE key = 'quz';
|
|
----
|
|
quz öäå
|
|
|
|
# Test invalid metadata
|
|
statement error
|
|
COPY (SELECT 1, 'foo') TO '__TEST_DIR__/kv_metadata_test_fail.parquet' (FORMAT PARQUET, KV_METADATA 'foobar');
|
|
----
|
|
Expected kv_metadata argument to be a STRUCT
|
|
|
|
# Test no kv
|
|
statement ok
|
|
COPY (SELECT 3, 'baz') TO '__TEST_DIR__/kv_metadata_test3.parquet' (FORMAT PARQUET);
|
|
|
|
query II
|
|
SELECT key::VARCHAR, value::VARCHAR FROM parquet_kv_metadata('__TEST_DIR__/kv_metadata_test3.parquet');
|
|
----
|
|
|
|
# Test globbing
|
|
statement ok
|
|
COPY (SELECT 2, 'bar') TO '__TEST_DIR__/kv_metadata_test2.parquet' (FORMAT PARQUET, KV_METADATA {a: 'b', c: 'd'});
|
|
|
|
query III
|
|
SELECT replace(replace(file_name, '\', '/'),replace('__TEST_DIR__/', '\', '/'), '') AS file_name, key::VARCHAR, value::VARCHAR FROM parquet_kv_metadata('__TEST_DIR__/kv_metadata_tes*') ORDER BY 1, 2;
|
|
----
|
|
kv_metadata_test.parquet baz 42
|
|
kv_metadata_test.parquet foo bar
|
|
kv_metadata_test.parquet quz \xC3\xB6\xC3\xA4\xC3\xA5
|
|
kv_metadata_test2.parquet a b
|
|
kv_metadata_test2.parquet c d
|
|
|