[Osgeo4w-trac] [osgeo4w] #758: Crash when reading SNAPPY compressed Parquet files through GDAL

OSGeo4W trac_osgeo4w at osgeo.org
Sun Jul 31 12:29:26 PDT 2022


#758: Crash when reading SNAPPY compressed Parquet files through GDAL
--------------------+----------------------------
Reporter:  rouault  |       Owner:  osgeo4w-dev@…
    Type:  defect   |      Status:  new
Priority:  major    |   Component:  Package
 Version:           |  Resolution:
Keywords:           |
--------------------+----------------------------
Comment (by jef):

 Not reproducable here.  Are you seing invalid instructions in eventlog?
 conda is using ARROW_SSE42=OFF (which I can't find in source -
 ARROW_SIMD_LEVEL seems related, but unlike tiledb it apperantly checks for
 support at runtime and is even configurable at runtime via
 ARROW_USER_SIMD_LEVEL).

 {{{

 C:\OSGeo4W>type run.bat
 type run.bat
 set CPL_DEBUG=ON
 ogrinfo -so test.parquet test
 for %%c in (SNAPPY GZIP ZSTD BROTLI) do (
   if exist out_%%c.parquet del out_%%c.parquet
   ogr2ogr -lco COMPRESSION=%%c out_%%c.parquet test.parquet
   ogrinfo -so out_%%c.parquet out_%%c
 )
 dir *.parquet
 C:\OSGeo4W>set CPL_DEBUG=ON

 C:\OSGeo4W>ogrinfo -so test.parquet test
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo = {"version": "0.1.0", "primary_column": "geometry",
 "columns": {"geometry": {"crs": "GEOGCRS[\"WGS 84\",ENSEMBLE[\"World
 Geodetic System 1984 ensemble\",MEMBER[\"World Geodetic System 1984
 (Transit)\"],MEMBER[\"World Geodetic System 1984 (G730)\"],MEMBER[\"World
 Geodetic System 1984 (G873)\"],MEMBER[\"World Geodetic System 1984
 (G1150)\"],MEMBER[\"World Geodetic System 1984 (G1674)\"],MEMBER[\"World
 Geodetic System 1984 (G1762)\"],MEMBER[\"World Geodetic System 1984
 (G2139)\"],ELLIPSOID[\"WGS
 84\",6378137,298.257223563],ENSEMBLEACCURACY[2.0]],CS[ellipsoidal,2],AXIS[\"geodetic
 latitude (Lat)\",north],AXIS[\"geodetic longitude
 (Lon)\",east],UNIT[\"degree\",0.0174532925199433],USAGE[SCOPE[\"Horizontal
 component of 3D
 system.\"],AREA[\"World.\"],BBOX[-90,-180,90,180]],ID[\"EPSG\",4326]]",
 "bbox": [0, 2, 4, 2], "encoding": "WKB"}}}
 GDAL: GDALOpen(test.parquet, this=000001C7F5CB5910) succeeds as Parquet.
 ARROW: Memory pool: bytes_allocated = 0
 ARROW: Memory pool: max_memory = 640
 GDAL: GDALClose(test.parquet, this=000001C7F5CB5910)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 INFO: Open of `test.parquet'
       using driver `Parquet' successful.

 Layer name: test
 Geometry: Point
 Feature Count: 5
 Extent: (0.000000, 2.000000) - (4.000000, 2.000000)
 Layer SRS WKT:
 GEOGCRS["WGS 84",
     ENSEMBLE["World Geodetic System 1984 ensemble",
         MEMBER["World Geodetic System 1984 (Transit)"],
         MEMBER["World Geodetic System 1984 (G730)"],
         MEMBER["World Geodetic System 1984 (G873)"],
         MEMBER["World Geodetic System 1984 (G1150)"],
         MEMBER["World Geodetic System 1984 (G1674)"],
         MEMBER["World Geodetic System 1984 (G1762)"],
         MEMBER["World Geodetic System 1984 (G2139)"],
         ELLIPSOID["WGS 84",6378137,298.257223563,
             LENGTHUNIT["metre",1]],
         ENSEMBLEACCURACY[2.0]],
     PRIMEM["Greenwich",0,
         ANGLEUNIT["degree",0.0174532925199433]],
     CS[ellipsoidal,2],
         AXIS["geodetic latitude (Lat)",north,
             ORDER[1],
             ANGLEUNIT["degree",0.0174532925199433]],
         AXIS["geodetic longitude (Lon)",east,
             ORDER[2],
             ANGLEUNIT["degree",0.0174532925199433]],
     USAGE[
         SCOPE["Horizontal component of 3D system."],
         AREA["World."],
         BBOX[-90,-180,90,180]],
     ID["EPSG",4326]]
 Data axis to CRS axis mapping: 2,1
 Geometry Column = geometry
 boolean: Integer(Boolean) (0.0)
 uint8: Integer (0.0)
 int8: Integer (0.0)
 uint16: Integer (0.0)
 int16: Integer(Int16) (0.0)
 uint32: Integer64 (0.0)
 int32: Integer (0.0)
 uint64: Real (0.0)
 int64: Integer64 (0.0)
 float32: Real(Float32) (0.0)
 float64: Real (0.0)
 string: String (0.0)
 large_string: String (0.0)
 timestamp_ms_gmt: DateTime (0.0)
 timestamp_ms_gmt_plus_2: DateTime (0.0)
 timestamp_ms_gmt_minus_0215: DateTime (0.0)
 timestamp_s_no_tz: DateTime (0.0)
 time32_s: Time (0.0)
 time32_ms: Time (0.0)
 time64_us: Integer64 (0.0)
 time64_ns: Integer64 (0.0)
 date32: Date (0.0)
 date64: Date (0.0)
 binary: Binary (0.0)
 large_binary: Binary (0.0)
 fixed_size_binary: Binary (2.0)
 decimal128: Real (7.3)
 decimal256: Real (7.3)
 list_boolean: IntegerList(Boolean) (0.0)
 list_uint8: IntegerList (0.0)
 list_int8: IntegerList (0.0)
 list_uint16: IntegerList (0.0)
 list_int16: IntegerList (0.0)
 list_uint32: Integer64List (0.0)
 list_int32: IntegerList (0.0)
 list_uint64: RealList (0.0)
 list_int64: Integer64List (0.0)
 list_float32: RealList(Float32) (0.0)
 list_float64: RealList (0.0)
 list_string: StringList (0.0)
 fixed_size_list_boolean: IntegerList(Boolean) (0.0)
 fixed_size_list_uint8: IntegerList (0.0)
 fixed_size_list_int8: IntegerList (0.0)
 fixed_size_list_uint16: IntegerList (0.0)
 fixed_size_list_int16: IntegerList (0.0)
 fixed_size_list_uint32: Integer64List (0.0)
 fixed_size_list_int32: IntegerList (0.0)
 fixed_size_list_uint64: RealList (0.0)
 fixed_size_list_int64: Integer64List (0.0)
 fixed_size_list_float32: RealList(Float32) (0.0)
 fixed_size_list_float64: RealList (0.0)
 fixed_size_list_string: StringList (0.0)
 struct_field.a: Integer64 (0.0)
 struct_field.b: Real (0.0)
 struct_field.c.d: String (0.0)
 struct_field.c.f: String (0.0)
 struct_field.h: Integer64List (0.0)
 struct_field.i: Integer64 (0.0)
 map_boolean: String(JSON) (0.0)
 map_uint8: String(JSON) (0.0)
 map_int8: String(JSON) (0.0)
 map_uint16: String(JSON) (0.0)
 map_int16: String(JSON) (0.0)
 map_uint32: String(JSON) (0.0)
 map_int32: String(JSON) (0.0)
 map_uint64: String(JSON) (0.0)
 map_int64: String(JSON) (0.0)
 map_float32: String(JSON) (0.0)
 map_float64: String(JSON) (0.0)
 map_string: String(JSON) (0.0)
 dict: Integer (0.0), domain name=dictDomain

 C:\OSGeo4W>for %c in (SNAPPY GZIP ZSTD BROTLI) do (
 if exist out_%c.parquet del out_%c.parquet
  ogr2ogr -lco COMPRESSION=%c out_%c.parquet test.parquet
  ogrinfo -so out_%c.parquet out_%c
 )

 C:\OSGeo4W>(
 if exist out_SNAPPY.parquet del out_SNAPPY.parquet
  ogr2ogr -lco COMPRESSION=SNAPPY out_SNAPPY.parquet test.parquet
  ogrinfo -so out_SNAPPY.parquet out_SNAPPY
 )
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo = {"version": "0.1.0", "primary_column": "geometry",
 "columns": {"geometry": {"crs": "GEOGCRS[\"WGS 84\",ENSEMBLE[\"World
 Geodetic System 1984 ensemble\",MEMBER[\"World Geodetic System 1984
 (Transit)\"],MEMBER[\"World Geodetic System 1984 (G730)\"],MEMBER[\"World
 Geodetic System 1984 (G873)\"],MEMBER[\"World Geodetic System 1984
 (G1150)\"],MEMBER[\"World Geodetic System 1984 (G1674)\"],MEMBER[\"World
 Geodetic System 1984 (G1762)\"],MEMBER[\"World Geodetic System 1984
 (G2139)\"],ELLIPSOID[\"WGS
 84\",6378137,298.257223563],ENSEMBLEACCURACY[2.0]],CS[ellipsoidal,2],AXIS[\"geodetic
 latitude (Lat)\",north],AXIS[\"geodetic longitude
 (Lon)\",east],UNIT[\"degree\",0.0174532925199433],USAGE[SCOPE[\"Horizontal
 component of 3D
 system.\"],AREA[\"World.\"],BBOX[-90,-180,90,180]],ID[\"EPSG\",4326]]",
 "bbox": [0, 2, 4, 2], "encoding": "WKB"}}}
 GDAL: GDALOpen(test.parquet, this=0000016F8C2664B0) succeeds as Parquet.
 GDAL: Using Parquet driver
 GDAL:
 GDALDriver::Create(Parquet,out_SNAPPY.parquet,0,0,0,Unknown,0000000000000000)
 GDALVectorTranslate: 5 features written in layer 'test'
 ARROW: Memory pool: bytes_allocated = 14144
 ARROW: Memory pool: max_memory = 35584
 GDAL: GDALClose(test.parquet, this=0000016F8C2664B0)
 ARROW: Memory pool (writer layer): bytes_allocated = 128
 ARROW: Memory pool (writer layer): max_memory = 36160
 GDAL: GDALClose(out_SNAPPY.parquet, this=0000016F8D27CF90)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo =
 {"version":"0.4.0","primary_column":"geometry","columns":{"geometry":{"encoding":"WKB","bbox":[0.0,2.0,4.0,2.0],"orientation":"counterclockwise","geometry_type":"Point"}}}
 PARQUET: gdal:schema =
 {"columns":{"boolean":{"type":"Integer","subtype":"Boolean"},"uint8":{"type":"Integer"},"int8":{"type":"Integer"},"uint16":{"type":"Integer"},"int16":{"type":"Integer","subtype":"Int16"},"uint32":{"type":"Integer64"},"int32":{"type":"Integer"},"uint64":{"type":"Real"},"int64":{"type":"Integer64"},"float32":{"type":"Real","subtype":"Float32"},"float64":{"type":"Real"},"string":{"type":"String"},"large_string":{"type":"String"},"timestamp_ms_gmt":{"type":"DateTime"},"timestamp_ms_gmt_plus_2":{"type":"DateTime"},"timestamp_ms_gmt_minus_0215":{"type":"DateTime"},"timestamp_s_no_tz":{"type":"DateTime"},"time32_s":{"type":"Time"},"time32_ms":{"type":"Time"},"time64_us":{"type":"Integer64"},"time64_ns":{"type":"Integer64"},"date32":{"type":"Date"},"date64":{"type":"Date"},"binary":{"type":"Binary"},"large_binary":{"type":"Binary"},"fixed_size_binary":{"type":"Binary","width":2},"decimal128":{"type":"Real","width":7,"precision":3},"decimal256":{"type":"Real","width":7,"precision":3},"list_boolean":{"type":"IntegerList","subtype":"Boolean"},"list_uint8":{"type":"IntegerList"},"list_int8":{"type":"IntegerList"},"list_uint16":{"type":"IntegerList"},"list_int16":{"type":"IntegerList"},"list_uint32":{"type":"Integer64List"},"list_int32":{"type":"IntegerList"},"list_uint64":{"type":"RealList"},"list_int64":{"type":"Integer64List"},"list_float32":{"type":"RealList","subtype":"Float32"},"list_float64":{"type":"RealList"},"list_string":{"type":"StringList"},"fixed_size_list_boolean":{"type":"IntegerList","subtype":"Boolean"},"fixed_size_list_uint8":{"type":"IntegerList"},"fixed_size_list_int8":{"type":"IntegerList"},"fixed_size_list_uint16":{"type":"IntegerList"},"fixed_size_list_int16":{"type":"IntegerList"},"fixed_size_list_uint32":{"type":"Integer64List"},"fixed_size_list_int32":{"type":"IntegerList"},"fixed_size_list_uint64":{"type":"RealList"},"fixed_size_list_int64":{"type":"Integer64List"},"fixed_size_list_float32":{"type":"RealList","subtype":"Float32"},"fixed_size_list_float64":{"type":"RealList"},"fixed_size_list_string":{"type":"StringList"},"struct_field.a":{"type":"Integer64"},"struct_field.b":{"type":"Real"},"struct_field.c.d":{"type":"String"},"struct_field.c.f":{"type":"String"},"struct_field.h":{"type":"Integer64List"},"struct_field.i":{"type":"Integer64"},"map_boolean":{"type":"String","subtype":"JSON"},"map_uint8":{"type":"String","subtype":"JSON"},"map_int8":{"type":"String","subtype":"JSON"},"map_uint16":{"type":"String","subtype":"JSON"},"map_int16":{"type":"String","subtype":"JSON"},"map_uint32":{"type":"String","subtype":"JSON"},"map_int32":{"type":"String","subtype":"JSON"},"map_uint64":{"type":"String","subtype":"JSON"},"map_int64":{"type":"String","subtype":"JSON"},"map_float32":{"type":"String","subtype":"JSON"},"map_float64":{"type":"String","subtype":"JSON"},"map_string":{"type":"String","subtype":"JSON"},"dict":{"type":"Integer"}}}
 GDAL: GDALOpen(out_SNAPPY.parquet, this=000002052253DF90) succeeds as
 Parquet.
 ARROW: Memory pool: bytes_allocated = 0
 ARROW: Memory pool: max_memory = 0
 GDAL: GDALClose(out_SNAPPY.parquet, this=000002052253DF90)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 INFO: Open of `out_SNAPPY.parquet'
       using driver `Parquet' successful.

 Layer name: out_SNAPPY
 Geometry: Point
 Feature Count: 5
 Extent: (0.000000, 2.000000) - (4.000000, 2.000000)
 Layer SRS WKT:
 GEOGCRS["WGS 84",
     ENSEMBLE["World Geodetic System 1984 ensemble",
         MEMBER["World Geodetic System 1984 (Transit)"],
         MEMBER["World Geodetic System 1984 (G730)"],
         MEMBER["World Geodetic System 1984 (G873)"],
         MEMBER["World Geodetic System 1984 (G1150)"],
         MEMBER["World Geodetic System 1984 (G1674)"],
         MEMBER["World Geodetic System 1984 (G1762)"],
         MEMBER["World Geodetic System 1984 (G2139)"],
         ELLIPSOID["WGS 84",6378137,298.257223563,
             LENGTHUNIT["metre",1]],
         ENSEMBLEACCURACY[2.0]],
     PRIMEM["Greenwich",0,
         ANGLEUNIT["degree",0.0174532925199433]],
     CS[ellipsoidal,2],
         AXIS["geodetic latitude (Lat)",north,
             ORDER[1],
             ANGLEUNIT["degree",0.0174532925199433]],
         AXIS["geodetic longitude (Lon)",east,
             ORDER[2],
             ANGLEUNIT["degree",0.0174532925199433]],
     USAGE[
         SCOPE["Horizontal component of 3D system."],
         AREA["World."],
         BBOX[-90,-180,90,180]],
     ID["EPSG",4326]]
 Data axis to CRS axis mapping: 2,1
 Geometry Column = geometry
 boolean: Integer(Boolean) (0.0)
 uint8: Integer (0.0)
 int8: Integer (0.0)
 uint16: Integer (0.0)
 int16: Integer(Int16) (0.0)
 uint32: Integer64 (0.0)
 int32: Integer (0.0)
 uint64: Real (0.0)
 int64: Integer64 (0.0)
 float32: Real(Float32) (0.0)
 float64: Real (0.0)
 string: String (0.0)
 large_string: String (0.0)
 timestamp_ms_gmt: DateTime (0.0)
 timestamp_ms_gmt_plus_2: DateTime (0.0)
 timestamp_ms_gmt_minus_0215: DateTime (0.0)
 timestamp_s_no_tz: DateTime (0.0)
 time32_s: Time (0.0)
 time32_ms: Time (0.0)
 time64_us: Integer64 (0.0)
 time64_ns: Integer64 (0.0)
 date32: Date (0.0)
 date64: Date (0.0)
 binary: Binary (0.0)
 large_binary: Binary (0.0)
 fixed_size_binary: Binary (2.0)
 decimal128: Real (7.3)
 decimal256: Real (7.3)
 list_boolean: IntegerList(Boolean) (0.0)
 list_uint8: IntegerList (0.0)
 list_int8: IntegerList (0.0)
 list_uint16: IntegerList (0.0)
 list_int16: IntegerList (0.0)
 list_uint32: Integer64List (0.0)
 list_int32: IntegerList (0.0)
 list_uint64: RealList (0.0)
 list_int64: Integer64List (0.0)
 list_float32: RealList(Float32) (0.0)
 list_float64: RealList (0.0)
 list_string: StringList (0.0)
 fixed_size_list_boolean: IntegerList(Boolean) (0.0)
 fixed_size_list_uint8: IntegerList (0.0)
 fixed_size_list_int8: IntegerList (0.0)
 fixed_size_list_uint16: IntegerList (0.0)
 fixed_size_list_int16: IntegerList (0.0)
 fixed_size_list_uint32: Integer64List (0.0)
 fixed_size_list_int32: IntegerList (0.0)
 fixed_size_list_uint64: RealList (0.0)
 fixed_size_list_int64: Integer64List (0.0)
 fixed_size_list_float32: RealList(Float32) (0.0)
 fixed_size_list_float64: RealList (0.0)
 fixed_size_list_string: StringList (0.0)
 struct_field.a: Integer64 (0.0)
 struct_field.b: Real (0.0)
 struct_field.c.d: String (0.0)
 struct_field.c.f: String (0.0)
 struct_field.h: Integer64List (0.0)
 struct_field.i: Integer64 (0.0)
 map_boolean: String(JSON) (0.0)
 map_uint8: String(JSON) (0.0)
 map_int8: String(JSON) (0.0)
 map_uint16: String(JSON) (0.0)
 map_int16: String(JSON) (0.0)
 map_uint32: String(JSON) (0.0)
 map_int32: String(JSON) (0.0)
 map_uint64: String(JSON) (0.0)
 map_int64: String(JSON) (0.0)
 map_float32: String(JSON) (0.0)
 map_float64: String(JSON) (0.0)
 map_string: String(JSON) (0.0)
 dict: Integer (0.0), domain name=dictDomain

 C:\OSGeo4W>(
 if exist out_GZIP.parquet del out_GZIP.parquet
  ogr2ogr -lco COMPRESSION=GZIP out_GZIP.parquet test.parquet
  ogrinfo -so out_GZIP.parquet out_GZIP
 )
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo = {"version": "0.1.0", "primary_column": "geometry",
 "columns": {"geometry": {"crs": "GEOGCRS[\"WGS 84\",ENSEMBLE[\"World
 Geodetic System 1984 ensemble\",MEMBER[\"World Geodetic System 1984
 (Transit)\"],MEMBER[\"World Geodetic System 1984 (G730)\"],MEMBER[\"World
 Geodetic System 1984 (G873)\"],MEMBER[\"World Geodetic System 1984
 (G1150)\"],MEMBER[\"World Geodetic System 1984 (G1674)\"],MEMBER[\"World
 Geodetic System 1984 (G1762)\"],MEMBER[\"World Geodetic System 1984
 (G2139)\"],ELLIPSOID[\"WGS
 84\",6378137,298.257223563],ENSEMBLEACCURACY[2.0]],CS[ellipsoidal,2],AXIS[\"geodetic
 latitude (Lat)\",north],AXIS[\"geodetic longitude
 (Lon)\",east],UNIT[\"degree\",0.0174532925199433],USAGE[SCOPE[\"Horizontal
 component of 3D
 system.\"],AREA[\"World.\"],BBOX[-90,-180,90,180]],ID[\"EPSG\",4326]]",
 "bbox": [0, 2, 4, 2], "encoding": "WKB"}}}
 GDAL: GDALOpen(test.parquet, this=000002BB7900BDB0) succeeds as Parquet.
 GDAL: Using Parquet driver
 GDAL:
 GDALDriver::Create(Parquet,out_GZIP.parquet,0,0,0,Unknown,0000000000000000)
 GDALVectorTranslate: 5 features written in layer 'test'
 ARROW: Memory pool: bytes_allocated = 14144
 ARROW: Memory pool: max_memory = 35584
 GDAL: GDALClose(test.parquet, this=000002BB7900BDB0)
 ARROW: Memory pool (writer layer): bytes_allocated = 128
 ARROW: Memory pool (writer layer): max_memory = 36160
 GDAL: GDALClose(out_GZIP.parquet, this=000002BB7BD97130)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo =
 {"version":"0.4.0","primary_column":"geometry","columns":{"geometry":{"encoding":"WKB","bbox":[0.0,2.0,4.0,2.0],"orientation":"counterclockwise","geometry_type":"Point"}}}
 PARQUET: gdal:schema =
 {"columns":{"boolean":{"type":"Integer","subtype":"Boolean"},"uint8":{"type":"Integer"},"int8":{"type":"Integer"},"uint16":{"type":"Integer"},"int16":{"type":"Integer","subtype":"Int16"},"uint32":{"type":"Integer64"},"int32":{"type":"Integer"},"uint64":{"type":"Real"},"int64":{"type":"Integer64"},"float32":{"type":"Real","subtype":"Float32"},"float64":{"type":"Real"},"string":{"type":"String"},"large_string":{"type":"String"},"timestamp_ms_gmt":{"type":"DateTime"},"timestamp_ms_gmt_plus_2":{"type":"DateTime"},"timestamp_ms_gmt_minus_0215":{"type":"DateTime"},"timestamp_s_no_tz":{"type":"DateTime"},"time32_s":{"type":"Time"},"time32_ms":{"type":"Time"},"time64_us":{"type":"Integer64"},"time64_ns":{"type":"Integer64"},"date32":{"type":"Date"},"date64":{"type":"Date"},"binary":{"type":"Binary"},"large_binary":{"type":"Binary"},"fixed_size_binary":{"type":"Binary","width":2},"decimal128":{"type":"Real","width":7,"precision":3},"decimal256":{"type":"Real","width":7,"precision":3},"list_boolean":{"type":"IntegerList","subtype":"Boolean"},"list_uint8":{"type":"IntegerList"},"list_int8":{"type":"IntegerList"},"list_uint16":{"type":"IntegerList"},"list_int16":{"type":"IntegerList"},"list_uint32":{"type":"Integer64List"},"list_int32":{"type":"IntegerList"},"list_uint64":{"type":"RealList"},"list_int64":{"type":"Integer64List"},"list_float32":{"type":"RealList","subtype":"Float32"},"list_float64":{"type":"RealList"},"list_string":{"type":"StringList"},"fixed_size_list_boolean":{"type":"IntegerList","subtype":"Boolean"},"fixed_size_list_uint8":{"type":"IntegerList"},"fixed_size_list_int8":{"type":"IntegerList"},"fixed_size_list_uint16":{"type":"IntegerList"},"fixed_size_list_int16":{"type":"IntegerList"},"fixed_size_list_uint32":{"type":"Integer64List"},"fixed_size_list_int32":{"type":"IntegerList"},"fixed_size_list_uint64":{"type":"RealList"},"fixed_size_list_int64":{"type":"Integer64List"},"fixed_size_list_float32":{"type":"RealList","subtype":"Float32"},"fixed_size_list_float64":{"type":"RealList"},"fixed_size_list_string":{"type":"StringList"},"struct_field.a":{"type":"Integer64"},"struct_field.b":{"type":"Real"},"struct_field.c.d":{"type":"String"},"struct_field.c.f":{"type":"String"},"struct_field.h":{"type":"Integer64List"},"struct_field.i":{"type":"Integer64"},"map_boolean":{"type":"String","subtype":"JSON"},"map_uint8":{"type":"String","subtype":"JSON"},"map_int8":{"type":"String","subtype":"JSON"},"map_uint16":{"type":"String","subtype":"JSON"},"map_int16":{"type":"String","subtype":"JSON"},"map_uint32":{"type":"String","subtype":"JSON"},"map_int32":{"type":"String","subtype":"JSON"},"map_uint64":{"type":"String","subtype":"JSON"},"map_int64":{"type":"String","subtype":"JSON"},"map_float32":{"type":"String","subtype":"JSON"},"map_float64":{"type":"String","subtype":"JSON"},"map_string":{"type":"String","subtype":"JSON"},"dict":{"type":"Integer"}}}
 GDAL: GDALOpen(out_GZIP.parquet, this=00000229E5B6BF30) succeeds as
 Parquet.
 ARROW: Memory pool: bytes_allocated = 0
 ARROW: Memory pool: max_memory = 0
 GDAL: GDALClose(out_GZIP.parquet, this=00000229E5B6BF30)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 INFO: Open of `out_GZIP.parquet'
       using driver `Parquet' successful.

 Layer name: out_GZIP
 Geometry: Point
 Feature Count: 5
 Extent: (0.000000, 2.000000) - (4.000000, 2.000000)
 Layer SRS WKT:
 GEOGCRS["WGS 84",
     ENSEMBLE["World Geodetic System 1984 ensemble",
         MEMBER["World Geodetic System 1984 (Transit)"],
         MEMBER["World Geodetic System 1984 (G730)"],
         MEMBER["World Geodetic System 1984 (G873)"],
         MEMBER["World Geodetic System 1984 (G1150)"],
         MEMBER["World Geodetic System 1984 (G1674)"],
         MEMBER["World Geodetic System 1984 (G1762)"],
         MEMBER["World Geodetic System 1984 (G2139)"],
         ELLIPSOID["WGS 84",6378137,298.257223563,
             LENGTHUNIT["metre",1]],
         ENSEMBLEACCURACY[2.0]],
     PRIMEM["Greenwich",0,
         ANGLEUNIT["degree",0.0174532925199433]],
     CS[ellipsoidal,2],
         AXIS["geodetic latitude (Lat)",north,
             ORDER[1],
             ANGLEUNIT["degree",0.0174532925199433]],
         AXIS["geodetic longitude (Lon)",east,
             ORDER[2],
             ANGLEUNIT["degree",0.0174532925199433]],
     USAGE[
         SCOPE["Horizontal component of 3D system."],
         AREA["World."],
         BBOX[-90,-180,90,180]],
     ID["EPSG",4326]]
 Data axis to CRS axis mapping: 2,1
 Geometry Column = geometry
 boolean: Integer(Boolean) (0.0)
 uint8: Integer (0.0)
 int8: Integer (0.0)
 uint16: Integer (0.0)
 int16: Integer(Int16) (0.0)
 uint32: Integer64 (0.0)
 int32: Integer (0.0)
 uint64: Real (0.0)
 int64: Integer64 (0.0)
 float32: Real(Float32) (0.0)
 float64: Real (0.0)
 string: String (0.0)
 large_string: String (0.0)
 timestamp_ms_gmt: DateTime (0.0)
 timestamp_ms_gmt_plus_2: DateTime (0.0)
 timestamp_ms_gmt_minus_0215: DateTime (0.0)
 timestamp_s_no_tz: DateTime (0.0)
 time32_s: Time (0.0)
 time32_ms: Time (0.0)
 time64_us: Integer64 (0.0)
 time64_ns: Integer64 (0.0)
 date32: Date (0.0)
 date64: Date (0.0)
 binary: Binary (0.0)
 large_binary: Binary (0.0)
 fixed_size_binary: Binary (2.0)
 decimal128: Real (7.3)
 decimal256: Real (7.3)
 list_boolean: IntegerList(Boolean) (0.0)
 list_uint8: IntegerList (0.0)
 list_int8: IntegerList (0.0)
 list_uint16: IntegerList (0.0)
 list_int16: IntegerList (0.0)
 list_uint32: Integer64List (0.0)
 list_int32: IntegerList (0.0)
 list_uint64: RealList (0.0)
 list_int64: Integer64List (0.0)
 list_float32: RealList(Float32) (0.0)
 list_float64: RealList (0.0)
 list_string: StringList (0.0)
 fixed_size_list_boolean: IntegerList(Boolean) (0.0)
 fixed_size_list_uint8: IntegerList (0.0)
 fixed_size_list_int8: IntegerList (0.0)
 fixed_size_list_uint16: IntegerList (0.0)
 fixed_size_list_int16: IntegerList (0.0)
 fixed_size_list_uint32: Integer64List (0.0)
 fixed_size_list_int32: IntegerList (0.0)
 fixed_size_list_uint64: RealList (0.0)
 fixed_size_list_int64: Integer64List (0.0)
 fixed_size_list_float32: RealList(Float32) (0.0)
 fixed_size_list_float64: RealList (0.0)
 fixed_size_list_string: StringList (0.0)
 struct_field.a: Integer64 (0.0)
 struct_field.b: Real (0.0)
 struct_field.c.d: String (0.0)
 struct_field.c.f: String (0.0)
 struct_field.h: Integer64List (0.0)
 struct_field.i: Integer64 (0.0)
 map_boolean: String(JSON) (0.0)
 map_uint8: String(JSON) (0.0)
 map_int8: String(JSON) (0.0)
 map_uint16: String(JSON) (0.0)
 map_int16: String(JSON) (0.0)
 map_uint32: String(JSON) (0.0)
 map_int32: String(JSON) (0.0)
 map_uint64: String(JSON) (0.0)
 map_int64: String(JSON) (0.0)
 map_float32: String(JSON) (0.0)
 map_float64: String(JSON) (0.0)
 map_string: String(JSON) (0.0)
 dict: Integer (0.0), domain name=dictDomain

 C:\OSGeo4W>(
 if exist out_ZSTD.parquet del out_ZSTD.parquet
  ogr2ogr -lco COMPRESSION=ZSTD out_ZSTD.parquet test.parquet
  ogrinfo -so out_ZSTD.parquet out_ZSTD
 )
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo = {"version": "0.1.0", "primary_column": "geometry",
 "columns": {"geometry": {"crs": "GEOGCRS[\"WGS 84\",ENSEMBLE[\"World
 Geodetic System 1984 ensemble\",MEMBER[\"World Geodetic System 1984
 (Transit)\"],MEMBER[\"World Geodetic System 1984 (G730)\"],MEMBER[\"World
 Geodetic System 1984 (G873)\"],MEMBER[\"World Geodetic System 1984
 (G1150)\"],MEMBER[\"World Geodetic System 1984 (G1674)\"],MEMBER[\"World
 Geodetic System 1984 (G1762)\"],MEMBER[\"World Geodetic System 1984
 (G2139)\"],ELLIPSOID[\"WGS
 84\",6378137,298.257223563],ENSEMBLEACCURACY[2.0]],CS[ellipsoidal,2],AXIS[\"geodetic
 latitude (Lat)\",north],AXIS[\"geodetic longitude
 (Lon)\",east],UNIT[\"degree\",0.0174532925199433],USAGE[SCOPE[\"Horizontal
 component of 3D
 system.\"],AREA[\"World.\"],BBOX[-90,-180,90,180]],ID[\"EPSG\",4326]]",
 "bbox": [0, 2, 4, 2], "encoding": "WKB"}}}
 GDAL: GDALOpen(test.parquet, this=000001BC8D2C4DA0) succeeds as Parquet.
 GDAL: Using Parquet driver
 GDAL:
 GDALDriver::Create(Parquet,out_ZSTD.parquet,0,0,0,Unknown,0000000000000000)
 GDALVectorTranslate: 5 features written in layer 'test'
 ARROW: Memory pool: bytes_allocated = 14144
 ARROW: Memory pool: max_memory = 35584
 GDAL: GDALClose(test.parquet, this=000001BC8D2C4DA0)
 ARROW: Memory pool (writer layer): bytes_allocated = 128
 ARROW: Memory pool (writer layer): max_memory = 36160
 GDAL: GDALClose(out_ZSTD.parquet, this=000001BC8D2D8690)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo =
 {"version":"0.4.0","primary_column":"geometry","columns":{"geometry":{"encoding":"WKB","bbox":[0.0,2.0,4.0,2.0],"orientation":"counterclockwise","geometry_type":"Point"}}}
 PARQUET: gdal:schema =
 {"columns":{"boolean":{"type":"Integer","subtype":"Boolean"},"uint8":{"type":"Integer"},"int8":{"type":"Integer"},"uint16":{"type":"Integer"},"int16":{"type":"Integer","subtype":"Int16"},"uint32":{"type":"Integer64"},"int32":{"type":"Integer"},"uint64":{"type":"Real"},"int64":{"type":"Integer64"},"float32":{"type":"Real","subtype":"Float32"},"float64":{"type":"Real"},"string":{"type":"String"},"large_string":{"type":"String"},"timestamp_ms_gmt":{"type":"DateTime"},"timestamp_ms_gmt_plus_2":{"type":"DateTime"},"timestamp_ms_gmt_minus_0215":{"type":"DateTime"},"timestamp_s_no_tz":{"type":"DateTime"},"time32_s":{"type":"Time"},"time32_ms":{"type":"Time"},"time64_us":{"type":"Integer64"},"time64_ns":{"type":"Integer64"},"date32":{"type":"Date"},"date64":{"type":"Date"},"binary":{"type":"Binary"},"large_binary":{"type":"Binary"},"fixed_size_binary":{"type":"Binary","width":2},"decimal128":{"type":"Real","width":7,"precision":3},"decimal256":{"type":"Real","width":7,"precision":3},"list_boolean":{"type":"IntegerList","subtype":"Boolean"},"list_uint8":{"type":"IntegerList"},"list_int8":{"type":"IntegerList"},"list_uint16":{"type":"IntegerList"},"list_int16":{"type":"IntegerList"},"list_uint32":{"type":"Integer64List"},"list_int32":{"type":"IntegerList"},"list_uint64":{"type":"RealList"},"list_int64":{"type":"Integer64List"},"list_float32":{"type":"RealList","subtype":"Float32"},"list_float64":{"type":"RealList"},"list_string":{"type":"StringList"},"fixed_size_list_boolean":{"type":"IntegerList","subtype":"Boolean"},"fixed_size_list_uint8":{"type":"IntegerList"},"fixed_size_list_int8":{"type":"IntegerList"},"fixed_size_list_uint16":{"type":"IntegerList"},"fixed_size_list_int16":{"type":"IntegerList"},"fixed_size_list_uint32":{"type":"Integer64List"},"fixed_size_list_int32":{"type":"IntegerList"},"fixed_size_list_uint64":{"type":"RealList"},"fixed_size_list_int64":{"type":"Integer64List"},"fixed_size_list_float32":{"type":"RealList","subtype":"Float32"},"fixed_size_list_float64":{"type":"RealList"},"fixed_size_list_string":{"type":"StringList"},"struct_field.a":{"type":"Integer64"},"struct_field.b":{"type":"Real"},"struct_field.c.d":{"type":"String"},"struct_field.c.f":{"type":"String"},"struct_field.h":{"type":"Integer64List"},"struct_field.i":{"type":"Integer64"},"map_boolean":{"type":"String","subtype":"JSON"},"map_uint8":{"type":"String","subtype":"JSON"},"map_int8":{"type":"String","subtype":"JSON"},"map_uint16":{"type":"String","subtype":"JSON"},"map_int16":{"type":"String","subtype":"JSON"},"map_uint32":{"type":"String","subtype":"JSON"},"map_int32":{"type":"String","subtype":"JSON"},"map_uint64":{"type":"String","subtype":"JSON"},"map_int64":{"type":"String","subtype":"JSON"},"map_float32":{"type":"String","subtype":"JSON"},"map_float64":{"type":"String","subtype":"JSON"},"map_string":{"type":"String","subtype":"JSON"},"dict":{"type":"Integer"}}}
 GDAL: GDALOpen(out_ZSTD.parquet, this=000001719CF25650) succeeds as
 Parquet.
 ARROW: Memory pool: bytes_allocated = 0
 ARROW: Memory pool: max_memory = 0
 GDAL: GDALClose(out_ZSTD.parquet, this=000001719CF25650)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 INFO: Open of `out_ZSTD.parquet'
       using driver `Parquet' successful.

 Layer name: out_ZSTD
 Geometry: Point
 Feature Count: 5
 Extent: (0.000000, 2.000000) - (4.000000, 2.000000)
 Layer SRS WKT:
 GEOGCRS["WGS 84",
     ENSEMBLE["World Geodetic System 1984 ensemble",
         MEMBER["World Geodetic System 1984 (Transit)"],
         MEMBER["World Geodetic System 1984 (G730)"],
         MEMBER["World Geodetic System 1984 (G873)"],
         MEMBER["World Geodetic System 1984 (G1150)"],
         MEMBER["World Geodetic System 1984 (G1674)"],
         MEMBER["World Geodetic System 1984 (G1762)"],
         MEMBER["World Geodetic System 1984 (G2139)"],
         ELLIPSOID["WGS 84",6378137,298.257223563,
             LENGTHUNIT["metre",1]],
         ENSEMBLEACCURACY[2.0]],
     PRIMEM["Greenwich",0,
         ANGLEUNIT["degree",0.0174532925199433]],
     CS[ellipsoidal,2],
         AXIS["geodetic latitude (Lat)",north,
             ORDER[1],
             ANGLEUNIT["degree",0.0174532925199433]],
         AXIS["geodetic longitude (Lon)",east,
             ORDER[2],
             ANGLEUNIT["degree",0.0174532925199433]],
     USAGE[
         SCOPE["Horizontal component of 3D system."],
         AREA["World."],
         BBOX[-90,-180,90,180]],
     ID["EPSG",4326]]
 Data axis to CRS axis mapping: 2,1
 Geometry Column = geometry
 boolean: Integer(Boolean) (0.0)
 uint8: Integer (0.0)
 int8: Integer (0.0)
 uint16: Integer (0.0)
 int16: Integer(Int16) (0.0)
 uint32: Integer64 (0.0)
 int32: Integer (0.0)
 uint64: Real (0.0)
 int64: Integer64 (0.0)
 float32: Real(Float32) (0.0)
 float64: Real (0.0)
 string: String (0.0)
 large_string: String (0.0)
 timestamp_ms_gmt: DateTime (0.0)
 timestamp_ms_gmt_plus_2: DateTime (0.0)
 timestamp_ms_gmt_minus_0215: DateTime (0.0)
 timestamp_s_no_tz: DateTime (0.0)
 time32_s: Time (0.0)
 time32_ms: Time (0.0)
 time64_us: Integer64 (0.0)
 time64_ns: Integer64 (0.0)
 date32: Date (0.0)
 date64: Date (0.0)
 binary: Binary (0.0)
 large_binary: Binary (0.0)
 fixed_size_binary: Binary (2.0)
 decimal128: Real (7.3)
 decimal256: Real (7.3)
 list_boolean: IntegerList(Boolean) (0.0)
 list_uint8: IntegerList (0.0)
 list_int8: IntegerList (0.0)
 list_uint16: IntegerList (0.0)
 list_int16: IntegerList (0.0)
 list_uint32: Integer64List (0.0)
 list_int32: IntegerList (0.0)
 list_uint64: RealList (0.0)
 list_int64: Integer64List (0.0)
 list_float32: RealList(Float32) (0.0)
 list_float64: RealList (0.0)
 list_string: StringList (0.0)
 fixed_size_list_boolean: IntegerList(Boolean) (0.0)
 fixed_size_list_uint8: IntegerList (0.0)
 fixed_size_list_int8: IntegerList (0.0)
 fixed_size_list_uint16: IntegerList (0.0)
 fixed_size_list_int16: IntegerList (0.0)
 fixed_size_list_uint32: Integer64List (0.0)
 fixed_size_list_int32: IntegerList (0.0)
 fixed_size_list_uint64: RealList (0.0)
 fixed_size_list_int64: Integer64List (0.0)
 fixed_size_list_float32: RealList(Float32) (0.0)
 fixed_size_list_float64: RealList (0.0)
 fixed_size_list_string: StringList (0.0)
 struct_field.a: Integer64 (0.0)
 struct_field.b: Real (0.0)
 struct_field.c.d: String (0.0)
 struct_field.c.f: String (0.0)
 struct_field.h: Integer64List (0.0)
 struct_field.i: Integer64 (0.0)
 map_boolean: String(JSON) (0.0)
 map_uint8: String(JSON) (0.0)
 map_int8: String(JSON) (0.0)
 map_uint16: String(JSON) (0.0)
 map_int16: String(JSON) (0.0)
 map_uint32: String(JSON) (0.0)
 map_int32: String(JSON) (0.0)
 map_uint64: String(JSON) (0.0)
 map_int64: String(JSON) (0.0)
 map_float32: String(JSON) (0.0)
 map_float64: String(JSON) (0.0)
 map_string: String(JSON) (0.0)
 dict: Integer (0.0), domain name=dictDomain

 C:\OSGeo4W>(
 if exist out_BROTLI.parquet del out_BROTLI.parquet
  ogr2ogr -lco COMPRESSION=BROTLI out_BROTLI.parquet test.parquet
  ogrinfo -so out_BROTLI.parquet out_BROTLI
 )
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo = {"version": "0.1.0", "primary_column": "geometry",
 "columns": {"geometry": {"crs": "GEOGCRS[\"WGS 84\",ENSEMBLE[\"World
 Geodetic System 1984 ensemble\",MEMBER[\"World Geodetic System 1984
 (Transit)\"],MEMBER[\"World Geodetic System 1984 (G730)\"],MEMBER[\"World
 Geodetic System 1984 (G873)\"],MEMBER[\"World Geodetic System 1984
 (G1150)\"],MEMBER[\"World Geodetic System 1984 (G1674)\"],MEMBER[\"World
 Geodetic System 1984 (G1762)\"],MEMBER[\"World Geodetic System 1984
 (G2139)\"],ELLIPSOID[\"WGS
 84\",6378137,298.257223563],ENSEMBLEACCURACY[2.0]],CS[ellipsoidal,2],AXIS[\"geodetic
 latitude (Lat)\",north],AXIS[\"geodetic longitude
 (Lon)\",east],UNIT[\"degree\",0.0174532925199433],USAGE[SCOPE[\"Horizontal
 component of 3D
 system.\"],AREA[\"World.\"],BBOX[-90,-180,90,180]],ID[\"EPSG\",4326]]",
 "bbox": [0, 2, 4, 2], "encoding": "WKB"}}}
 GDAL: GDALOpen(test.parquet, this=00000294A7A6B800) succeeds as Parquet.
 GDAL: Using Parquet driver
 GDAL:
 GDALDriver::Create(Parquet,out_BROTLI.parquet,0,0,0,Unknown,0000000000000000)
 GDALVectorTranslate: 5 features written in layer 'test'
 ARROW: Memory pool: bytes_allocated = 14144
 ARROW: Memory pool: max_memory = 35584
 GDAL: GDALClose(test.parquet, this=00000294A7A6B800)
 ARROW: Memory pool (writer layer): bytes_allocated = 128
 ARROW: Memory pool (writer layer): max_memory = 36160
 GDAL: GDALClose(out_BROTLI.parquet, this=00000294A8695000)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 GDAL: Auto register
 C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_ECW_JP2ECW.dll using
 GDALRegister_ECW_JP2ECW.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_GEOR.dll
 using GDALRegister_GEOR.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_HDF5.dll
 using GDALRegister_HDF5.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\gdal_MrSID.dll
 using GDALRegister_MrSID.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_OCI.dll using
 RegisterOGROCI.
 GDAL: Auto register C:\OSGeo4W\apps\gdal\lib\gdalplugins\ogr_SOSI.dll
 using RegisterOGRSOSI.
 PARQUET: geo =
 {"version":"0.4.0","primary_column":"geometry","columns":{"geometry":{"encoding":"WKB","bbox":[0.0,2.0,4.0,2.0],"orientation":"counterclockwise","geometry_type":"Point"}}}
 PARQUET: gdal:schema =
 {"columns":{"boolean":{"type":"Integer","subtype":"Boolean"},"uint8":{"type":"Integer"},"int8":{"type":"Integer"},"uint16":{"type":"Integer"},"int16":{"type":"Integer","subtype":"Int16"},"uint32":{"type":"Integer64"},"int32":{"type":"Integer"},"uint64":{"type":"Real"},"int64":{"type":"Integer64"},"float32":{"type":"Real","subtype":"Float32"},"float64":{"type":"Real"},"string":{"type":"String"},"large_string":{"type":"String"},"timestamp_ms_gmt":{"type":"DateTime"},"timestamp_ms_gmt_plus_2":{"type":"DateTime"},"timestamp_ms_gmt_minus_0215":{"type":"DateTime"},"timestamp_s_no_tz":{"type":"DateTime"},"time32_s":{"type":"Time"},"time32_ms":{"type":"Time"},"time64_us":{"type":"Integer64"},"time64_ns":{"type":"Integer64"},"date32":{"type":"Date"},"date64":{"type":"Date"},"binary":{"type":"Binary"},"large_binary":{"type":"Binary"},"fixed_size_binary":{"type":"Binary","width":2},"decimal128":{"type":"Real","width":7,"precision":3},"decimal256":{"type":"Real","width":7,"precision":3},"list_boolean":{"type":"IntegerList","subtype":"Boolean"},"list_uint8":{"type":"IntegerList"},"list_int8":{"type":"IntegerList"},"list_uint16":{"type":"IntegerList"},"list_int16":{"type":"IntegerList"},"list_uint32":{"type":"Integer64List"},"list_int32":{"type":"IntegerList"},"list_uint64":{"type":"RealList"},"list_int64":{"type":"Integer64List"},"list_float32":{"type":"RealList","subtype":"Float32"},"list_float64":{"type":"RealList"},"list_string":{"type":"StringList"},"fixed_size_list_boolean":{"type":"IntegerList","subtype":"Boolean"},"fixed_size_list_uint8":{"type":"IntegerList"},"fixed_size_list_int8":{"type":"IntegerList"},"fixed_size_list_uint16":{"type":"IntegerList"},"fixed_size_list_int16":{"type":"IntegerList"},"fixed_size_list_uint32":{"type":"Integer64List"},"fixed_size_list_int32":{"type":"IntegerList"},"fixed_size_list_uint64":{"type":"RealList"},"fixed_size_list_int64":{"type":"Integer64List"},"fixed_size_list_float32":{"type":"RealList","subtype":"Float32"},"fixed_size_list_float64":{"type":"RealList"},"fixed_size_list_string":{"type":"StringList"},"struct_field.a":{"type":"Integer64"},"struct_field.b":{"type":"Real"},"struct_field.c.d":{"type":"String"},"struct_field.c.f":{"type":"String"},"struct_field.h":{"type":"Integer64List"},"struct_field.i":{"type":"Integer64"},"map_boolean":{"type":"String","subtype":"JSON"},"map_uint8":{"type":"String","subtype":"JSON"},"map_int8":{"type":"String","subtype":"JSON"},"map_uint16":{"type":"String","subtype":"JSON"},"map_int16":{"type":"String","subtype":"JSON"},"map_uint32":{"type":"String","subtype":"JSON"},"map_int32":{"type":"String","subtype":"JSON"},"map_uint64":{"type":"String","subtype":"JSON"},"map_int64":{"type":"String","subtype":"JSON"},"map_float32":{"type":"String","subtype":"JSON"},"map_float64":{"type":"String","subtype":"JSON"},"map_string":{"type":"String","subtype":"JSON"},"dict":{"type":"Integer"}}}
 GDAL: GDALOpen(out_BROTLI.parquet, this=000001D3C729F120) succeeds as
 Parquet.
 ARROW: Memory pool: bytes_allocated = 0
 ARROW: Memory pool: max_memory = 0
 GDAL: GDALClose(out_BROTLI.parquet, this=000001D3C729F120)
 GDAL: In GDALDestroy - unloading GDAL shared library.
 INFO: Open of `out_BROTLI.parquet'
       using driver `Parquet' successful.

 Layer name: out_BROTLI
 Geometry: Point
 Feature Count: 5
 Extent: (0.000000, 2.000000) - (4.000000, 2.000000)
 Layer SRS WKT:
 GEOGCRS["WGS 84",
     ENSEMBLE["World Geodetic System 1984 ensemble",
         MEMBER["World Geodetic System 1984 (Transit)"],
         MEMBER["World Geodetic System 1984 (G730)"],
         MEMBER["World Geodetic System 1984 (G873)"],
         MEMBER["World Geodetic System 1984 (G1150)"],
         MEMBER["World Geodetic System 1984 (G1674)"],
         MEMBER["World Geodetic System 1984 (G1762)"],
         MEMBER["World Geodetic System 1984 (G2139)"],
         ELLIPSOID["WGS 84",6378137,298.257223563,
             LENGTHUNIT["metre",1]],
         ENSEMBLEACCURACY[2.0]],
     PRIMEM["Greenwich",0,
         ANGLEUNIT["degree",0.0174532925199433]],
     CS[ellipsoidal,2],
         AXIS["geodetic latitude (Lat)",north,
             ORDER[1],
             ANGLEUNIT["degree",0.0174532925199433]],
         AXIS["geodetic longitude (Lon)",east,
             ORDER[2],
             ANGLEUNIT["degree",0.0174532925199433]],
     USAGE[
         SCOPE["Horizontal component of 3D system."],
         AREA["World."],
         BBOX[-90,-180,90,180]],
     ID["EPSG",4326]]
 Data axis to CRS axis mapping: 2,1
 Geometry Column = geometry
 boolean: Integer(Boolean) (0.0)
 uint8: Integer (0.0)
 int8: Integer (0.0)
 uint16: Integer (0.0)
 int16: Integer(Int16) (0.0)
 uint32: Integer64 (0.0)
 int32: Integer (0.0)
 uint64: Real (0.0)
 int64: Integer64 (0.0)
 float32: Real(Float32) (0.0)
 float64: Real (0.0)
 string: String (0.0)
 large_string: String (0.0)
 timestamp_ms_gmt: DateTime (0.0)
 timestamp_ms_gmt_plus_2: DateTime (0.0)
 timestamp_ms_gmt_minus_0215: DateTime (0.0)
 timestamp_s_no_tz: DateTime (0.0)
 time32_s: Time (0.0)
 time32_ms: Time (0.0)
 time64_us: Integer64 (0.0)
 time64_ns: Integer64 (0.0)
 date32: Date (0.0)
 date64: Date (0.0)
 binary: Binary (0.0)
 large_binary: Binary (0.0)
 fixed_size_binary: Binary (2.0)
 decimal128: Real (7.3)
 decimal256: Real (7.3)
 list_boolean: IntegerList(Boolean) (0.0)
 list_uint8: IntegerList (0.0)
 list_int8: IntegerList (0.0)
 list_uint16: IntegerList (0.0)
 list_int16: IntegerList (0.0)
 list_uint32: Integer64List (0.0)
 list_int32: IntegerList (0.0)
 list_uint64: RealList (0.0)
 list_int64: Integer64List (0.0)
 list_float32: RealList(Float32) (0.0)
 list_float64: RealList (0.0)
 list_string: StringList (0.0)
 fixed_size_list_boolean: IntegerList(Boolean) (0.0)
 fixed_size_list_uint8: IntegerList (0.0)
 fixed_size_list_int8: IntegerList (0.0)
 fixed_size_list_uint16: IntegerList (0.0)
 fixed_size_list_int16: IntegerList (0.0)
 fixed_size_list_uint32: Integer64List (0.0)
 fixed_size_list_int32: IntegerList (0.0)
 fixed_size_list_uint64: RealList (0.0)
 fixed_size_list_int64: Integer64List (0.0)
 fixed_size_list_float32: RealList(Float32) (0.0)
 fixed_size_list_float64: RealList (0.0)
 fixed_size_list_string: StringList (0.0)
 struct_field.a: Integer64 (0.0)
 struct_field.b: Real (0.0)
 struct_field.c.d: String (0.0)
 struct_field.c.f: String (0.0)
 struct_field.h: Integer64List (0.0)
 struct_field.i: Integer64 (0.0)
 map_boolean: String(JSON) (0.0)
 map_uint8: String(JSON) (0.0)
 map_int8: String(JSON) (0.0)
 map_uint16: String(JSON) (0.0)
 map_int16: String(JSON) (0.0)
 map_uint32: String(JSON) (0.0)
 map_int32: String(JSON) (0.0)
 map_uint64: String(JSON) (0.0)
 map_int64: String(JSON) (0.0)
 map_float32: String(JSON) (0.0)
 map_float64: String(JSON) (0.0)
 map_string: String(JSON) (0.0)
 dict: Integer (0.0), domain name=dictDomain

 C:\OSGeo4W>dir *.parquet
  Volume in Laufwerk C: hat keine Bezeichnung.
  Volumeseriennummer: 22C3-C828

  Verzeichnis von C:\OSGeo4W

 07/31/2022  09:26 PM            37,888 out_BROTLI.parquet
 07/31/2022  09:26 PM            39,955 out_GZIP.parquet
 07/31/2022  09:26 PM            37,921 out_SNAPPY.parquet
 07/31/2022  09:26 PM            38,893 out_ZSTD.parquet
 07/31/2022  04:19 PM            57,756 test.parquet
                5 Datei(en),        212,413 Bytes
                0 Verzeichnis(se), 36,217,315,328 Bytes frei
 }}}
-- 
Ticket URL: <https://trac.osgeo.org/osgeo4w/ticket/758#comment:1>
OSGeo4W <http://trac.osgeo.org/osgeo4w>
OSGeo4W is the Windows installer and package environment for the OSGeo stack.


More information about the Osgeo4w-trac mailing list