changelog shortlog graph tags branches changeset file revisions annotate raw help

Mercurial > core / lisp/lib/dat/parquet/thrift.lisp

revision 640: 642b3b82b20d
parent 637: b88bf15f60d0
     1.1--- a/lisp/lib/dat/parquet/thrift.lisp	Sun Sep 08 12:24:33 2024 -0400
     1.2+++ b/lisp/lib/dat/parquet/thrift.lisp	Sun Sep 08 17:35:03 2024 -0400
     1.3@@ -10,111 +10,34 @@
     1.4 ;;; Code:
     1.5 (in-package :dat/parquet)
     1.6 
     1.7-(defun parquet-json-types ()
     1.8-  (mapcar
     1.9-   (lambda (x)
    1.10-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.11-   (parquet-json-enum-getf "Type")))
    1.12-(defparameter *parquet-types* (parquet-json-types))
    1.13-(defun parquet-json-converted-types ()
    1.14-  (mapcar
    1.15-   (lambda (x)
    1.16-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.17-   (parquet-json-enum-getf "ConvertedType")))
    1.18-(defparameter *parquet-converted-types* (parquet-json-converted-types))
    1.19-(defun parquet-json-field-repetition-types ()
    1.20-  (mapcar
    1.21-   (lambda (x)
    1.22-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.23-   (parquet-json-enum-getf "FieldRepetitionType")))
    1.24-(defparameter *parquet-field-repetition-types*
    1.25-  (parquet-json-field-repetition-types))
    1.26-(defun parquet-json-encodings ()
    1.27-  (mapcar
    1.28-   (lambda (x)
    1.29-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.30-   (parquet-json-enum-getf "Encoding")))
    1.31-(defparameter *parquet-encodings* (parquet-json-encodings))
    1.32-(defun parquet-json-compression-codecs ()
    1.33-  (mapcar
    1.34-   (lambda (x)
    1.35-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.36-   (parquet-json-enum-getf "CompressionCodec")))
    1.37-(defparameter *parquet-compression-codecs* (parquet-json-compression-codecs))
    1.38-(defun parquet-json-page-types ()
    1.39-  (mapcar
    1.40-   (lambda (x)
    1.41-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.42-   (parquet-json-enum-getf "PageType")))
    1.43-(defparameter *parquet-page-types* (parquet-json-page-types))
    1.44-(defun parquet-json-boundary-orders ()
    1.45-  (mapcar
    1.46-   (lambda (x)
    1.47-     (keywordicate (snakecase-name-to-lisp-name (json-getf x "name"))))
    1.48-   (parquet-json-enum-getf "BoundaryOrder")))
    1.49-(defparameter *parquet-boundary-orders* (parquet-json-boundary-orders))
    1.50-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.51-  (sb-impl::%deftype 'parquet-boolean
    1.52-                     (sb-impl::constant-type-expander 'parquet-boolean
    1.53-                                                      (progn 'boolean))
    1.54-                     (sb-c:source-location)))
    1.55-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.56-  (sb-impl::%deftype 'parquet-int32
    1.57-                     (sb-impl::constant-type-expander 'parquet-int32
    1.58-                                                      (progn
    1.59-                                                       '(signed-byte 32)))
    1.60-                     (sb-c:source-location)))
    1.61-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.62-  (sb-impl::%deftype 'parquet-int64
    1.63-                     (sb-impl::constant-type-expander 'parquet-int64
    1.64-                                                      (progn
    1.65-                                                       '(signed-byte 64)))
    1.66-                     (sb-c:source-location)))
    1.67-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.68-  (sb-impl::%deftype 'parquet-int96
    1.69-                     (sb-impl::constant-type-expander 'parquet-int96
    1.70-                                                      (progn
    1.71-                                                       '(signed-byte 96)))
    1.72-                     (sb-c:source-location)))
    1.73-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.74-  (sb-impl::%deftype 'parquet-float
    1.75-                     (sb-impl::constant-type-expander 'parquet-float
    1.76-                                                      (progn 'float))
    1.77-                     (sb-c:source-location)))
    1.78-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.79-  (sb-impl::%deftype 'parquet-double
    1.80-                     (sb-impl::constant-type-expander 'parquet-double
    1.81-                                                      (progn 'double-float))
    1.82-                     (sb-c:source-location)))
    1.83-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.84-  (sb-impl::%deftype 'parquet-byte-array
    1.85-                     (sb-int:named-lambda (sb-impl::type-expander
    1.86-                                           parquet-byte-array)
    1.87-                         (#:expr)
    1.88-                       (declare (sb-c::lambda-list (&optional size)))
    1.89-                       (sb-int:named-ds-bind (:macro parquet-byte-array
    1.90-                                              . deftype)
    1.91-                           (&optional size)
    1.92-                           (cdr #:expr)
    1.93-                         (declare (sb-c::constant-value size))
    1.94-                         (block parquet-byte-array `(octet-vector ,size))))
    1.95-                     nil))
    1.96-(eval-when (:compile-toplevel :load-toplevel :execute)
    1.97-  (sb-impl::%deftype 'parquet-fixed-len-byte-array
    1.98-                     (sb-int:named-lambda (sb-impl::type-expander
    1.99-                                           parquet-fixed-len-byte-array)
   1.100-                         (#:expr)
   1.101-                       (declare (sb-c::lambda-list (size)))
   1.102-                       (sb-int:named-ds-bind (:macro
   1.103-                                              parquet-fixed-len-byte-array
   1.104-                                              . deftype)
   1.105-                           (size)
   1.106-                           (cdr #:expr)
   1.107-                         (declare (sb-c::constant-value size))
   1.108-                         (block parquet-fixed-len-byte-array
   1.109-                           `(octet-vector ,size))))
   1.110-                     nil))
   1.111-(defclass parquet-size-statistics (dat/parquet:parquet-object)
   1.112+(defvar *parquet-json-types*
   1.113+  '(:boolean :int32 :int64 :int96 :float :double :byte-array
   1.114+    :fixed-len-byte-array))
   1.115+(defvar *parquet-json-converted-types*
   1.116+  '(:utf8 :map :map-key-value :list :enum :decimal :date :time-millis
   1.117+    :time-micros :timestamp-millis :timestamp-micros :uint-8 :uint-16 :uint-32
   1.118+    :uint-64 :int-8 :int-16 :int-32 :int-64 :json :bson :interval))
   1.119+(defvar *parquet-json-field-repetition-types* '(:required :optional :repeated))
   1.120+(defvar *parquet-json-encodings*
   1.121+  '(:plain :plain-dictionary :rle :bit-packed :delta-binary-packed
   1.122+    :delta-length-byte-array :delta-byte-array :rle-dictionary
   1.123+    :byte-stream-split))
   1.124+(defvar *parquet-json-compression-codecs*
   1.125+  '(:uncompressed :snappy :gzip :lzo :brotli :lz4 :zstd :lz4-raw))
   1.126+(defvar *parquet-json-page-types*
   1.127+  '(:data-page :index-page :dictionary-page :data-page-v2))
   1.128+(defvar *parquet-json-boundary-orders* '(:unordered :ascending :descending))
   1.129+(deftype parquet-boolean () 'boolean)
   1.130+(deftype parquet-int32 () '(signed-byte 32))
   1.131+(deftype parquet-int64 () '(signed-byte 64))
   1.132+(deftype parquet-int96 () '(signed-byte 96))
   1.133+(deftype parquet-float () 'float)
   1.134+(deftype parquet-double () 'double-float)
   1.135+(deftype parquet-byte-array (&optional dat/parquet/gen::size)
   1.136+  `(octet-vector ,dat/parquet/gen::size))
   1.137+(deftype parquet-fixed-len-byte-array (dat/parquet/gen::size)
   1.138+  `(octet-vector ,dat/parquet/gen::size))
   1.139+(defclass parquet-size-statistics (parquet-object)
   1.140           ((unencoded-byte-array-data-bytes :documentation
   1.141             "The number of physical bytes stored for BYTE_ARRAY data values assuming
   1.142 no encoding. This is exclusive of the bytes needed to store the length of
   1.143@@ -163,7 +86,7 @@
   1.144 in this structure can help determine the number of nulls at a particular
   1.145 nesting level and maximum length of lists).
   1.146 "))
   1.147-(defclass parquet-statistics (dat/parquet:parquet-object)
   1.148+(defclass parquet-statistics (parquet-object)
   1.149           ((max :documentation
   1.150                 "DEPRECATED: min and max value of the column. Use min_value and max_value.
   1.151 
   1.152@@ -214,16 +137,16 @@
   1.153           (:documentation "Statistics per row group and per page
   1.154 All fields are optional.
   1.155 "))
   1.156-(defclass parquet-string-type (dat/parquet:parquet-object) nil
   1.157+(defclass parquet-string-type (parquet-object) nil
   1.158           (:documentation "Empty structs to use as logical type annotations
   1.159 "))
   1.160-(defclass parquet-uuid-type (dat/parquet:parquet-object) nil)
   1.161-(defclass parquet-map-type (dat/parquet:parquet-object) nil)
   1.162-(defclass parquet-list-type (dat/parquet:parquet-object) nil)
   1.163-(defclass parquet-enum-type (dat/parquet:parquet-object) nil)
   1.164-(defclass parquet-date-type (dat/parquet:parquet-object) nil)
   1.165-(defclass parquet-float16-type (dat/parquet:parquet-object) nil)
   1.166-(defclass parquet-null-type (dat/parquet:parquet-object) nil
   1.167+(defclass parquet-uuid-type (parquet-object) nil)
   1.168+(defclass parquet-map-type (parquet-object) nil)
   1.169+(defclass parquet-list-type (parquet-object) nil)
   1.170+(defclass parquet-enum-type (parquet-object) nil)
   1.171+(defclass parquet-date-type (parquet-object) nil)
   1.172+(defclass parquet-float16-type (parquet-object) nil)
   1.173+(defclass parquet-null-type (parquet-object) nil
   1.174           (:documentation
   1.175            "Logical type to annotate a column that is always null.
   1.176 
   1.177@@ -231,7 +154,7 @@
   1.178 null and the physical type can't be determined. This annotation signals
   1.179 the case where the physical type was guessed from all null values.
   1.180 "))
   1.181-(defclass parquet-decimal-type (dat/parquet:parquet-object)
   1.182+(defclass parquet-decimal-type (parquet-object)
   1.183           ((scale :initarg :scale :type (signed-byte 32))
   1.184            (precision :initarg :precision :type (signed-byte 32)))
   1.185           (:documentation "Decimal logical type annotation
   1.186@@ -244,33 +167,33 @@
   1.187 
   1.188 Allowed for physical types: INT32, INT64, FIXED_LEN_BYTE_ARRAY, and BYTE_ARRAY.
   1.189 "))
   1.190-(defclass parquet-milli-seconds (dat/parquet:parquet-object) nil
   1.191+(defclass parquet-milli-seconds (parquet-object) nil
   1.192           (:documentation "Time units for logical types
   1.193 "))
   1.194-(defclass parquet-micro-seconds (dat/parquet:parquet-object) nil)
   1.195-(defclass parquet-nano-seconds (dat/parquet:parquet-object) nil)
   1.196-(defclass parquet-time-unit (dat/parquet:parquet-object)
   1.197+(defclass parquet-micro-seconds (parquet-object) nil)
   1.198+(defclass parquet-nano-seconds (parquet-object) nil)
   1.199+(defclass parquet-time-unit (parquet-object)
   1.200           ((millis :initarg :millis :initform nil :type
   1.201             (or null parquet-milli-seconds))
   1.202            (micros :initarg :micros :initform nil :type
   1.203             (or null parquet-micro-seconds))
   1.204            (nanos :initarg :nanos :initform nil :type
   1.205             (or null parquet-nano-seconds))))
   1.206-(defclass parquet-timestamp-type (dat/parquet:parquet-object)
   1.207+(defclass parquet-timestamp-type (parquet-object)
   1.208           ((isadjustedtoutc :initarg :isadjustedtoutc :type boolean)
   1.209            (unit :initarg :unit :type parquet-time-unit))
   1.210           (:documentation "Timestamp logical type annotation
   1.211 
   1.212 Allowed for physical types: INT64
   1.213 "))
   1.214-(defclass parquet-time-type (dat/parquet:parquet-object)
   1.215+(defclass parquet-time-type (parquet-object)
   1.216           ((isadjustedtoutc :initarg :isadjustedtoutc :type boolean)
   1.217            (unit :initarg :unit :type parquet-time-unit))
   1.218           (:documentation "Time logical type annotation
   1.219 
   1.220 Allowed for physical types: INT32 (millis), INT64 (micros, nanos)
   1.221 "))
   1.222-(defclass parquet-int-type (dat/parquet:parquet-object)
   1.223+(defclass parquet-int-type (parquet-object)
   1.224           ((bitwidth :initarg :bitwidth)
   1.225            (issigned :initarg :issigned :type boolean))
   1.226           (:documentation "Integer logical type annotation
   1.227@@ -279,17 +202,17 @@
   1.228 
   1.229 Allowed for physical types: INT32, INT64
   1.230 "))
   1.231-(defclass parquet-json-type (dat/parquet:parquet-object) nil
   1.232+(defclass parquet-json-type (parquet-object) nil
   1.233           (:documentation "Embedded JSON logical type annotation
   1.234 
   1.235 Allowed for physical types: BYTE_ARRAY
   1.236 "))
   1.237-(defclass parquet-bson-type (dat/parquet:parquet-object) nil
   1.238+(defclass parquet-bson-type (parquet-object) nil
   1.239           (:documentation "Embedded BSON logical type annotation
   1.240 
   1.241 Allowed for physical types: BYTE_ARRAY
   1.242 "))
   1.243-(defclass parquet-logical-type (dat/parquet:parquet-object)
   1.244+(defclass parquet-logical-type (parquet-object)
   1.245           ((string :initarg :string :initform nil :type
   1.246                    (or null parquet-string-type))
   1.247            (map :initarg :map :initform nil :type (or null parquet-map-type))
   1.248@@ -328,7 +251,7 @@
   1.249 SchemaElement must also set the corresponding ConvertedType (if any)
   1.250 from the following table.
   1.251 "))
   1.252-(defclass parquet-schema-element (dat/parquet:parquet-object)
   1.253+(defclass parquet-schema-element (parquet-object)
   1.254           ((type :documentation
   1.255             "Data type for this field. Not set if the current element is a non-leaf node
   1.256 "
   1.257@@ -392,7 +315,7 @@
   1.258  - if it is a primitive type (leaf) then type is defined and num_children is undefined
   1.259 the nodes are listed in depth first traversal order.
   1.260 "))
   1.261-(defclass parquet-data-page-header (dat/parquet:parquet-object)
   1.262+(defclass parquet-data-page-header (parquet-object)
   1.263           ((num-values :documentation
   1.264             "Number of values, including NULLs, in this data page.
   1.265 
   1.266@@ -420,8 +343,8 @@
   1.267             (or null parquet-statistics)))
   1.268           (:documentation "Data page header
   1.269 "))
   1.270-(defclass parquet-index-page-header (dat/parquet:parquet-object) nil)
   1.271-(defclass parquet-dictionary-page-header (dat/parquet:parquet-object)
   1.272+(defclass parquet-index-page-header (parquet-object) nil)
   1.273+(defclass parquet-dictionary-page-header (parquet-object)
   1.274           ((num-values :documentation "Number of values in the dictionary *
   1.275 "
   1.276             :initarg :num-values :type (signed-byte 32))
   1.277@@ -438,7 +361,7 @@
   1.278 can be placed in a column chunk.
   1.279 
   1.280 "))
   1.281-(defclass parquet-data-page-header-v2 (dat/parquet:parquet-object)
   1.282+(defclass parquet-data-page-header-v2 (parquet-object)
   1.283           ((num-values :documentation
   1.284             "Number of values, including NULLs, in this data page. *
   1.285 "
   1.286@@ -483,10 +406,10 @@
   1.287 The remaining section containing the data is compressed if is_compressed is true
   1.288 
   1.289 "))
   1.290-(defclass parquet-split-block-algorithm (dat/parquet:parquet-object) nil
   1.291+(defclass parquet-split-block-algorithm (parquet-object) nil
   1.292           (:documentation "Block-based algorithm type annotation. *
   1.293 "))
   1.294-(defclass parquet-bloom-filter-algorithm (dat/parquet:parquet-object)
   1.295+(defclass parquet-bloom-filter-algorithm (parquet-object)
   1.296           ((block :documentation
   1.297              "Block-based Bloom filter. *
   1.298 "
   1.299@@ -498,13 +421,13 @@
   1.300              (or null parquet-split-block-algorithm)))
   1.301           (:documentation "The algorithm used in Bloom filter. *
   1.302 "))
   1.303-(defclass parquet-xx-hash (dat/parquet:parquet-object) nil
   1.304+(defclass parquet-xx-hash (parquet-object) nil
   1.305           (:documentation
   1.306            "Hash strategy type annotation. xxHash is an extremely fast non-cryptographic hash
   1.307 algorithm. It uses 64 bits version of xxHash.
   1.308 
   1.309 "))
   1.310-(defclass parquet-bloom-filter-hash (dat/parquet:parquet-object)
   1.311+(defclass parquet-bloom-filter-hash (parquet-object)
   1.312           ((xxhash :documentation "xxHash Strategy. *
   1.313 "
   1.314             :initarg :xxhash :initform nil :type (or null parquet-xx-hash)))
   1.315@@ -513,14 +436,14 @@
   1.316 using plain encoding.
   1.317 
   1.318 "))
   1.319-(defclass parquet-uncompressed (dat/parquet:parquet-object) nil
   1.320+(defclass parquet-uncompressed (parquet-object) nil
   1.321           (:documentation "The compression used in the Bloom filter.
   1.322 
   1.323 "))
   1.324-(defclass parquet-bloom-filter-compression (dat/parquet:parquet-object)
   1.325+(defclass parquet-bloom-filter-compression (parquet-object)
   1.326           ((uncompressed :initarg :uncompressed :initform nil :type
   1.327             (or null parquet-uncompressed))))
   1.328-(defclass parquet-bloom-filter-header (dat/parquet:parquet-object)
   1.329+(defclass parquet-bloom-filter-header (parquet-object)
   1.330           ((numbytes :documentation "The size of bitset in bytes *
   1.331 "
   1.332             :initarg :numbytes :type (signed-byte 32))
   1.333@@ -539,7 +462,7 @@
   1.334 and followed by its bitset.
   1.335 
   1.336 "))
   1.337-(defclass parquet-page-header (dat/parquet:parquet-object)
   1.338+(defclass parquet-page-header (parquet-object)
   1.339           ((type :documentation
   1.340             "the type of the page: indicates which of the *_header fields is set *
   1.341 "
   1.342@@ -579,12 +502,12 @@
   1.343             nil :type (or null parquet-dictionary-page-header))
   1.344            (data-page-header-v2 :initarg :data-page-header-v2 :initform nil
   1.345             :type (or null parquet-data-page-header-v2))))
   1.346-(defclass parquet-key-value (dat/parquet:parquet-object)
   1.347+(defclass parquet-key-value (parquet-object)
   1.348           ((key :initarg :key :type string)
   1.349            (value :initarg :value :initform nil :type (or null string)))
   1.350           (:documentation "Wrapper struct to store key values
   1.351 "))
   1.352-(defclass parquet-sorting-column (dat/parquet:parquet-object)
   1.353+(defclass parquet-sorting-column (parquet-object)
   1.354           ((column-idx :documentation
   1.355             "The ordinal position of the column (in this row group) *
   1.356 "
   1.357@@ -600,7 +523,7 @@
   1.358             :initarg :nulls-first :type boolean))
   1.359           (:documentation "Sort order within a RowGroup of a leaf column
   1.360 "))
   1.361-(defclass parquet-page-encoding-stats (dat/parquet:parquet-object)
   1.362+(defclass parquet-page-encoding-stats (parquet-object)
   1.363           ((page-type :documentation "the page type (data\\dic\\...) *
   1.364 "
   1.365             :initarg :page-type :type parquet-page-type)
   1.366@@ -613,7 +536,7 @@
   1.367                   :initarg :count :type (signed-byte 32)))
   1.368           (:documentation "statistics of a given page type and encoding
   1.369 "))
   1.370-(defclass parquet-column-meta-data (dat/parquet:parquet-object)
   1.371+(defclass parquet-column-meta-data (parquet-object)
   1.372           ((type :documentation "Type of this column *
   1.373 "
   1.374             :initarg :type :type parquet-type)
   1.375@@ -693,8 +616,8 @@
   1.376             (or null parquet-size-statistics)))
   1.377           (:documentation "Description for column metadata
   1.378 "))
   1.379-(defclass parquet-encryption-with-footer-key (dat/parquet:parquet-object) nil)
   1.380-(defclass parquet-encryption-with-column-key (dat/parquet:parquet-object)
   1.381+(defclass parquet-encryption-with-footer-key (parquet-object) nil)
   1.382+(defclass parquet-encryption-with-column-key (parquet-object)
   1.383           ((path-in-schema :documentation "Column path in schema *
   1.384 "
   1.385             :initarg :path-in-schema :type (vector string))
   1.386@@ -702,12 +625,12 @@
   1.387             "Retrieval metadata of column encryption key *
   1.388 "
   1.389             :initarg :key-metadata :initform nil :type (or null octet-vector))))
   1.390-(defclass parquet-column-crypto-meta-data (dat/parquet:parquet-object)
   1.391+(defclass parquet-column-crypto-meta-data (parquet-object)
   1.392           ((encryption-with-footer-key :initarg :encryption-with-footer-key
   1.393             :initform nil :type (or null parquet-encryption-with-footer-key))
   1.394            (encryption-with-column-key :initarg :encryption-with-column-key
   1.395             :initform nil :type (or null parquet-encryption-with-column-key))))
   1.396-(defclass parquet-column-chunk (dat/parquet:parquet-object)
   1.397+(defclass parquet-column-chunk (parquet-object)
   1.398           ((file-path :documentation
   1.399             "File where column data is stored.  If not set, assumed to be same file as
   1.400 metadata.  This path is relative to the current file.
   1.401@@ -764,7 +687,7 @@
   1.402 "
   1.403             :initarg :encrypted-column-metadata :initform nil :type
   1.404             (or null octet-vector))))
   1.405-(defclass parquet-row-group (dat/parquet:parquet-object)
   1.406+(defclass parquet-row-group (parquet-object)
   1.407           ((columns :documentation
   1.408             "Metadata for each column chunk in this row group.
   1.409 This list must have the same order as the SchemaElement list in FileMetaData.
   1.410@@ -799,11 +722,11 @@
   1.411            (ordinal :documentation "Row group ordinal in the file *
   1.412 "
   1.413             :initarg :ordinal :initform nil :type (or null (signed-byte 16)))))
   1.414-(defclass parquet-type-defined-order (dat/parquet:parquet-object) nil
   1.415+(defclass parquet-type-defined-order (parquet-object) nil
   1.416           (:documentation
   1.417            "Empty struct to signal the order defined by the physical or logical type
   1.418 "))
   1.419-(defclass parquet-column-order (dat/parquet:parquet-object)
   1.420+(defclass parquet-column-order (parquet-object)
   1.421           ((type-order :documentation "The sort orders for logical types are:
   1.422   UTF8 - unsigned byte-wise comparison
   1.423   INT8 - signed comparison
   1.424@@ -867,7 +790,7 @@
   1.425 If the reader does not support the value of this union, min and max stats
   1.426 for this column should be ignored.
   1.427 "))
   1.428-(defclass parquet-page-location (dat/parquet:parquet-object)
   1.429+(defclass parquet-page-location (parquet-object)
   1.430           ((offset :documentation "Offset of the page in the file *
   1.431 "
   1.432             :initarg :offset :type (signed-byte 64))
   1.433@@ -882,7 +805,7 @@
   1.434 (repetition_level = 0).
   1.435 "
   1.436             :initarg :first-row-index :type (signed-byte 64))))
   1.437-(defclass parquet-offset-index (dat/parquet:parquet-object)
   1.438+(defclass parquet-offset-index (parquet-object)
   1.439           ((page-locations :documentation
   1.440             "PageLocations, ordered by increasing PageLocation.offset. It is required
   1.441 that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
   1.442@@ -902,7 +825,7 @@
   1.443 
   1.444 OffsetIndex may be present even if ColumnIndex is not.
   1.445 "))
   1.446-(defclass parquet-column-index (dat/parquet:parquet-object)
   1.447+(defclass parquet-column-index (parquet-object)
   1.448           ((null-pages :documentation
   1.449             "A list of Boolean values to determine the validity of the corresponding
   1.450 min and max values. If true, a page contains only null values, and writers
   1.451@@ -966,7 +889,7 @@
   1.452 For each field in this structure, <field>[i] refers to the page at
   1.453 OffsetIndex.page_locations[i]
   1.454 "))
   1.455-(defclass parquet-aes-gcm-v1 (dat/parquet:parquet-object)
   1.456+(defclass parquet-aes-gcm-v1 (parquet-object)
   1.457           ((aad-prefix :documentation "AAD prefix *
   1.458 "
   1.459             :initarg :aad-prefix :initform nil :type (or null octet-vector))
   1.460@@ -980,7 +903,7 @@
   1.461 readers must supply the prefix *
   1.462 "
   1.463             :initarg :supply-aad-prefix :initform nil :type (or null boolean))))
   1.464-(defclass parquet-aes-gcm-ctr-v1 (dat/parquet:parquet-object)
   1.465+(defclass parquet-aes-gcm-ctr-v1 (parquet-object)
   1.466           ((aad-prefix :documentation "AAD prefix *
   1.467 "
   1.468             :initarg :aad-prefix :initform nil :type (or null octet-vector))
   1.469@@ -994,12 +917,12 @@
   1.470 readers must supply the prefix *
   1.471 "
   1.472             :initarg :supply-aad-prefix :initform nil :type (or null boolean))))
   1.473-(defclass parquet-encryption-algorithm (dat/parquet:parquet-object)
   1.474+(defclass parquet-encryption-algorithm (parquet-object)
   1.475           ((aes-gcm-v1 :initarg :aes-gcm-v1 :initform nil :type
   1.476             (or null parquet-aes-gcm-v1))
   1.477            (aes-gcm-ctr-v1 :initarg :aes-gcm-ctr-v1 :initform nil :type
   1.478             (or null parquet-aes-gcm-ctr-v1))))
   1.479-(defclass parquet-file-meta-data (dat/parquet:parquet-object)
   1.480+(defclass parquet-file-meta-data (parquet-object)
   1.481           ((version :documentation "Version of this file *
   1.482 "
   1.483             :initarg :version :type (signed-byte 32))
   1.484@@ -1062,7 +985,7 @@
   1.485             (or null octet-vector)))
   1.486           (:documentation "Description for file metadata
   1.487 "))
   1.488-(defclass parquet-file-crypto-meta-data (dat/parquet:parquet-object)
   1.489+(defclass parquet-file-crypto-meta-data (parquet-object)
   1.490           ((encryption-algorithm :documentation
   1.491             "Encryption algorithm. This field is only used for files
   1.492 with encrypted footer. Files with plaintext footer store algorithm id