Repository navigation
fix(init): quote role and database names in the generated SQL - #124
Open
jayhemnani9910 wants to merge 1 commit into
Open
jayhemnani9910 wants to merge 1 commit into
jayhemnani9910 wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
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.
What and why
pgbot initwrites the role and database names into its SQL as they are. A hyphen, a space or an uppercase letter makes the output fail in psql or name a different object. With--role Mon-Role --database "My-App DB":The same happens when the database name is detected from the connection string (
postgres://.../My-App%20DB), and for thepg_read_binary_filegrant that--logsand thepgbot logspermission hint print.conn.QuoteIdentdouble-quotes a name unless it is a plain lowercase identifier, the same ruleinternal/advisoruses for itsCREATE INDEXsuggestions, sopgbot_roandyourdbprint unchanged.initSQLandpglog.ReadGrantSQLuse it. TheDATABASE_URLhint at the end escapes the role and database for a URL (my-app%20db).Checked against Postgres 17:
pgbot init --role Mon-Role --database "My-App DB" --logs | psqlfails with the syntax error above on main and creates the role withpg_monitorandCONNECTon that database with this branch.TestInitSQLQuotesNames(cmd/pgbot) andTestQuoteIdent(internal/conn) are new; the first fails on main.Checklist
scripts/gate.shpasses (builds HEAD, not just the working tree)EXPLAIN ANALYZE; findings stay deterministic (computed in Go)model.Context/--json/ the store--jsonchange is additive, ormodel.SchemaVersionbumped + schema regenerated (go run ./tools/schemagen) (no--jsonchange)docs/findings/<id>.mdpage + catalog entry (no new finding)