Files
email-tracker/external/duckdb/test/geoparquet/mixed.test
2025-10-24 19:21:19 -05:00

62 lines
2.3 KiB
SQL

# name: test/geoparquet/mixed.test
# group: [geoparquet]
require spatial
require parquet
#------------------------------------------------------------------------------
# Create a table
#------------------------------------------------------------------------------
statement ok
CREATE TABLE t1 (col INT, geom GEOMETRY);
statement ok
INSERT INTO t1 VALUES
(1, 'POINT(0 0)'),
(2, 'POINT Z(1 1 1)'),
(3, 'LINESTRING(0 0, 1 1)'),
(4, 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'),
(5, 'MULTIPOINT(0 0, 1 1)'),
(6, 'MULTILINESTRING((0 0, 1 1), (2 2, 3 3))'),
(7, 'MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)))'),
(8, 'GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0, 1 1))');
#------------------------------------------------------------------------------
# Test parquet output
#------------------------------------------------------------------------------
statement ok
COPY (SELECT * FROM t1) TO '__TEST_DIR__/t1.parquet' (FORMAT 'parquet');
# Now read it back
statement ok
CREATE TABLE t2 AS SELECT * FROM '__TEST_DIR__/t1.parquet';
query II rowsort result_1
SELECT * FROM t2;
query II rowsort result_2
SELECT * FROM t1;
#------------------------------------------------------------------------------
# Inspect the parquet file
#------------------------------------------------------------------------------
query I
SELECT (decode(value)) as col
FROM parquet_kv_metadata('__TEST_DIR__/t1.parquet');
----
{"version":"1.0.0","primary_column":"geom","columns":{"geom":{"encoding":"WKB","geometry_types":["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection","Point Z"],"bbox":[0.0,0.0,1.0,3.0,3.0,1.0]}}}
#------------------------------------------------------------------------------
# Write with RETURN_STATS
#------------------------------------------------------------------------------
query IIIIII
COPY (SELECT * FROM t1) TO '__TEST_DIR__/t1.parquet' (FORMAT 'parquet', RETURN_STATS);
----
<REGEX>:.*t1.parquet 8 <REGEX>:\d+ <REGEX>:\d+ <REGEX>:{'"col"'={column_size_bytes=\d+, max=8, min=1, null_count=0}, '"geom"'={bbox_xmax=3.0, bbox_xmin=0.0, bbox_ymax=3.0, bbox_ymin=0.0, bbox_zmax=1.0, bbox_zmin=1.0, column_size_bytes=\d+, geo_types='\[point, linestring, polygon, multipoint, multilinestring, multipolygon, geometrycollection, point_z\]', null_count=0}} NULL