Repository navigation
fix(python): emit Alembic op.execute SQL as an escaped string literal - #151
Open
devinpadron1 wants to merge 1 commit into
Open
devinpadron1 wants to merge 1 commit into
devinpadron1 wants to merge 1 commit into
Conversation
PythonGenerator.generateMigration wrapped each statement in """...""". SQL from TypeORM usually ends in a quoted identifier, so the line ended in four quotes (DROP TABLE "user"""") and most generated migrations failed with "SyntaxError: unterminated string literal". Emit JSON.stringify(sql) instead. Each JSON escape (\" \\ \n \t \uXXXX) means the same in a Python string literal, so the SQL reaches op.execute unchanged. The new test runs the generated migration in python3 under a stub alembic.op and checks it records exactly the input SQL (quoted identifier, backslash, newlines, and the downgrade path). It is skipped when python3 is not installed. fixes apsoai#148
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.
generateMigrationwrapped each statement in"""…""". SQL ending in a quoted identifier left a stray quote, so Python failed withSyntaxError: unterminated string literal.Statements are now
JSON.stringify(sql), which escapes the quotes inside the SQL as\", so they can't end the string early:Go is unaffected: goose migrations are plain
.sql.New test runs the generated migration in python3; 390 tests pass, lint 0 errors.
Fixes #148