Mercurial > core / lisp/lib/dat/parquet/io.lisp
changeset 698: |
96958d3eb5b0 |
parent: |
b57066450cfa
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
1 ;;; io.lisp --- Parquet IO 6 (in-package :dat/parquet) 9 (defun parquet-write-magic (stream) 10 (write-string +parquet-magic-number+ stream)) 12 (defun parquet-read-magic (stream) 13 (assert (= #.(char-code (aref +parquet-magic-number+ 0)) (read-byte stream))) 14 (assert (= #.(char-code (aref +parquet-magic-number+ 1)) (read-byte stream))) 15 (assert (= #.(char-code (aref +parquet-magic-number+ 2)) (read-byte stream))) 16 (assert (= #.(char-code (aref +parquet-magic-number+ 3)) (read-byte stream)))) 18 (defun parquet-read-unsigned (stream) 19 (read-uleb128 stream)) 21 (defun parquet-read-signed (stream) 24 (defun parquet-read-boolean (stream) 25 (ecase (read-byte stream) 29 (defun parquet-file-stream-p (stream) 30 "Assert the start and end of a file STREAM are the parquet magic bytes." 31 (parquet-read-magic stream) 32 ;; set position to end - 4 33 (file-position stream (- (the fixnum (file-length stream)) 4)) 34 (parquet-read-magic stream)) 36 (defun parquet-read-schema-element (stream)) 37 (defun parquet-read-schema (stream) 38 "Read a parquet-schema which is repeated list of parquet-schema-element." 42 (defun parquet-read-file-meta-data (stream) 43 "Read a parquet-file-meta-data object from STREAM." 45 (make-instance 'parquet-file-meta-data 46 :version (parquet-read-signed stream) 47 :schema (list (parquet-read-signed stream)))) 49 (defun parquet-read-footer (stream) 50 "Read the footer of parquet data in STREAM." 51 (parquet-file-stream-p stream) 52 ;; set file-position, read metadata length and magic 53 (file-position stream (- (file-length stream) 8)) 54 (let ((len (parquet-read-unsigned stream))) 55 (file-position stream (- (file-length stream) 8 len)) 56 (parquet-read-file-meta-data stream)))