This is primarily an experiment. At this point I'm getting back the
Geometry as a GeoJSON blob, which is pretty massive progress, but I'm
still not able to manipulate the data directly the way I'd like.
This adds a few different fields to the column SQL builder that were
once either calculated or hard-coded:
* Import - so you can import the column from anywhere
* Type - fully, rather than partially, modifiable to allow any naming
convention
* TypeFactory - fully, rather than partially defined
I also alphabetized some things because the OCD compels me.
pgx/v4/stdlib was only used in test infrastructure, but its transitive
dependency on jackc/pgproto3/v2 exposed the build to GO-2026-4518 (DoS
via negative field length panic in DataRow.Decode).
Replaces the pgconn.ParseConfig call via GenerateDSN with url.Parse for
DSN validation, and SELECT current_database() for retrieving the
database name, removing the last non-test dependency on the pgx/v4.
Updates TestUInt64Overflow in tests/postgres to match pgx/v5 error
format: v5 renamed Int to Int64 across pgtype to match database/sql
conventions, so the overflow error now says "int64" instead of "Int8".
Bumps minimum Go version to 1.24 (required by pgx/v5).
- fix#442
- Since handling all edge cases for generic type parsing is not trivial, users will specify the fields manually.
- To support more than one import per type, add an additional field for extra imports per type.
- Add examples for defining those types in the current tests that show how to define custom types.
plus and minus infinity keyword tests implemented
range table tests added
skip cockroach db added
select test case added for range fields
generator modified to generate correct types
generator tests modified to include sample range table
model and template generators modified to support range fields
returning the T in UPPER and LOWER functions
raw ranges implemented
bounds set as optional
dep modified
dependencies modified and issue fixed
range expression with templates implemented
rangeExpression change to make it more type safe
third parameter of constructor function fixed
literals removed, functions added
tests modified
constructor functions used for creating range expressions
NumRange converted to a constructor function from literal
range_lower and range_upper renamed to lower_bound and upper_bound
range literal removed
PlusInfinity and MinusInfinity implemented
int4 and int8 castings added
issues fixed and tests checked
number, ts, tstz literal and cast implemented
date range literal expression modified and raw function used
parent type converted from RangeExpression to Expression
range type implemented for postgres
range column type, function and literal expression implemented
CONTAINS and OVERLAP operations added for range expressions
range expressions implemented
This change improves performance for generating mysql models
for databases with large number of tables. In my local testing
for a database with about 1000 tables and 140k columns, generation
time was reduced from about 1h to less than one second.