GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Execute SQL: fix multibyte offsets and Execute Current Line by deepsidhu1313 · Pull Request #4244 · sqlitebrowser/sqlitebrowser Conversation
Contributor
New test-run-sql, 60 cases (3 of 4 multibyte rows and 7 of 21 current-line rows failed before). Not handled: the statement start detection still breaks on a ; inside a comment, a string or a trigger body.
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactionsRunSql gets byte positions from the editor but used them as character
indices into the QString when checking whether there is anything to
execute. As soon as the text in front of the part to execute contained
multibyte characters, the byte position moved ahead of the character
position, so for the last lines of the SQL code the check looked past
the end of the string, found nothing and silently skipped the
execution ("Execution finished without errors." without any result).
Cut the part to execute out of the UTF-8 encoded query instead, like
the rest of the class already does, and add a test target for RunSql.
Related: sqlitebrowser#3171
RunSql only checked after executing a statement whether it had reached the end of the part to execute. SQLite skips white space, comments and empty statements in front of a statement though, so everything left in the line after its last statement (an additional semicolon, trailing spaces or a trailing comment) made it prepare and execute the first statement of one of the following lines as well, and the result of that one replaced the one of the line. Likewise, executing a line which only consists of a comment ran the next statement. Skip these things ourselves before preparing a statement and stop if nothing else is left in the part to execute. Also move the calculation of the part to execute for the current line from MainWindow to RunSql, so it can be tested. Related: sqlitebrowser#2440 Statements returning data have to be reported as such even if they return no rows, because otherwise the results table is not updated and keeps showing the rows of an earlier statement. This was the case for those which do not start with SELECT, like WITH ... SELECT. It works now because RunSql looks at the number of result columns of the prepared statement, so add a test to keep it that way. Related: sqlitebrowser#1431 This branch has not been deployedNo deployments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ReviewersNo reviewsUh oh!
There was an error while loading. Please reload this page. AssigneesNo one assignedLabels
None yet
ProjectsMilestoneNo milestoneDevelopmentSuccessfully merging this pull request may close these issues. Uh oh!
There was an error while loading. Please reload this page. 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. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |