Repository navigation
Fix wrong generated output (names, outer-join embeds, PG arrays) - #42
Open
devin-ai-integration[bot] wants to merge 1 commit into
Open
devin-ai-integration[bot] wants to merge 1 commit into
devin-ai-integration[bot] wants to merge 1 commit into
Conversation
…le/attribute names, outer-join embeds, nested and undecoded PG arrays Co-Authored-By: Doron Eli Rachman <doron050@gmail.com>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
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.
Summary
Fixes the cases from the feature-gap analysis (section 1a) where the plugin generated code that was wrong or did not load:
WHERE id > $1 AND id < $2generateddef m(id:, id:)(SyntaxError). The second one is nowid_2:.Transaction,Initialize,Connect,WithClient,Hash, ... silently overrode the generated method (q.transaction { }ran the query). These names are now rejected with a clear error.authorandauthorsboth becameAuthor(superclass mismatch). The plural table now keeps its plural name (Authors); any collision that is left raises an error.user-queries.sqlgeneratedclass User-queriesSql. It is nowUserQueriesSql(my_queries.sqlstaysMy_queriesSql). Two files that would write the same.rbare rejected.class,hash,end,to_h,Full Name, ... becameDataattributes that override core methods or are not valid. They now get a trailing_(class_) or are sanitized (full_Name). The value is still read by the original column name.sqlc.embedin outer joins: a missingLEFT JOINside gave a model full ofnils. In queries withLEFT/RIGHT/FULL JOIN, embedded models are now typedModel?and arenilwhen the table's NOT NULL columns are all NULL. (sqlc doesn't say which side of the join an embed is on.)array_dims:int[][]is nowArray[Array[Integer]], notArray[Integer].uuid[], enum arrays,citext[], ...) came back as raw"{a,b}"strings while being typedArray[String].configurenow registers aPG::TextDecoder::Arrayfor every array type inpg_typeas a fallback (one extra query per new connection).The PG example gains
postgres_array_types,ListAuthorsWithOptionalBook(LEFT JOIN embed) andListAuthorsBetweenIds(repeated param).test/fixtures/pg.binis recaptured andsteep_expectations.ymlis refreshed (line shifts plus 3 morePGconstant warnings).Breaking for code that relied on the old names: result columns named after keywords or core methods, query files with non-identifier characters, and query names that are now rejected.
Checklist
examples/is regenerated (rake sqlc_generate_process) and committedrake test, andrake end2end_*when the generated code changes)rake rubocop) and Steep-clean (rake steep)feature,bug,breaking,documentation) so the release notes are grouped correctlyTested locally:
rake test,rake rubocop steep,rake end2end_pg(postgres:16),rake end2end_sqlite3.