Open
Conversation
Fix UUID bug
Add synthetic documentation link
- Add PG 18 and 17 to CI test matrix, drop EOL versions 10-11 - Update Dockerfile to use bookworm base image - Add PG_MODULE_MAGIC_EXT for PG 18+ to report extension name/version - Document supported PostgreSQL versions in README - Fix create_foreignscan_path API change (new disabled_nodes parameter) - Fix ExplainState/ExplainPropertyText header changes in PG 18 - Update test expected output for new debug messages Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Security fixes: - Replace strcpy() with memcpy() to prevent buffer overflow - Use NAMEDATALEN instead of hardcoded buffer size - Add null termination after strncpy() calls - Add path character validation to reject control characters New security feature: - Add parquet_fdw.allowed_directories GUC variable - Only superusers can access files when allowed_directories is empty - Non-superusers can only access files within allowed directories - Paths are canonicalized with realpath() to prevent symlink bypasses - Document security model in README Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix heap.hpp: use delete[] for array deallocation (was using delete) - Remove duplicate exec_state_corrected_ver.cpp file - Remove stale TODO comments in exec_state.cpp - Update parquet::arrow::FileReader::Make to use arrow::Result API (deprecated in Arrow 23.0.0) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- heap.hpp: Add assert() for bounds checking in append() and head() - parquet_impl.cpp: Use lstat() fallback when d_type == DT_UNKNOWN (fixes directory scanning on filesystems that don't set d_type) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Cache UUID type detection in TypeInfo struct to avoid per-row checks - Add FIXED_SIZE_BINARY handling in bytes_to_postgres_type() for UUID filtering support (fixes crash when filtering on UUID columns) - Add UUID test data and regression tests for UUID columns - Update test data generator with explicit schemas to avoid large_string type (not supported by parquet_fdw) - Add requirements.txt and update Dockerfile for test data generation - Add .venv to .gitignore Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds the ability to map table names to paths in a
IMPORT FOREIGN SCHEMAcommand, with the optiontables_map.Its value is a space-separated list of
key=valuevalues with table names as keys and Parquet files paths as values. Like forfilename, file globbing can be used, and like with Linux PATH variable, the colon:is used to separate multiple paths within a value.As a security, the extension checks that the paths in the
tables_mapare within the external schema path, preventing accessing files elsewhere on the server. Also, if foreign schemalimit toorexceptclauses are used specifiying table names, only these names will be considered in thetables_map.Tables created through the
tables_mapoptions are identical as if they were created with acreate foreign tablecommand with afilenameoption. All other options from theimport foreign schemaare transmitted to thecreate foreign table.Each table must have at least one Parquet file when created, to query Parquet field and map them to colomun names. Of course, files globbing is evaluated at query-time, so one can add files to a directory and have them considered in the query results.
This branch is based on code in #96, so working with PostgreSQL 17. It also adds support for
UUIDcolumns.