-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix sqlite update return and order by type inference #1960
Fix sqlite update return and order by type inference #1960
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
9582d65
to
269b0c5
Compare
Hopefully a rebase will fix the CI failures. |
269b0c5
to
7e29be3
Compare
This would close #1923 right? Unfortunately any change to null inference would be a breaking change so this will have to wait for 0.7.0. Fortunately we don't plan for the 0.6.x release cycle to be as long as 0.5.x, though I don't want to give a concrete timeline since things always change. |
Yep, it fixes #1923 (which impacts the calculated nullability). |
PR target changed to the 0.7 development branch. |
* add failing test cases for update/delete return into * fix regression in null tracking by improving tracking of cursor empty/full state * add failing test case for order by column types * Add support for SorterOpen,SorterInsert,SorterData * add failing test case for unions * fix range copy/move implementation * fix wrong copy/move range * remove calls to dbg!
* add failing test cases for update/delete return into * fix regression in null tracking by improving tracking of cursor empty/full state * add failing test case for order by column types * Add support for SorterOpen,SorterInsert,SorterData * add failing test case for unions * fix range copy/move implementation * fix wrong copy/move range * remove calls to dbg!
* add failing test cases for update/delete return into * fix regression in null tracking by improving tracking of cursor empty/full state * add failing test case for order by column types * Add support for SorterOpen,SorterInsert,SorterData * add failing test case for unions * fix range copy/move implementation * fix wrong copy/move range * remove calls to dbg!
* convert logger to output a query graph * avoid duplicating branch paths to shrink output graph * separate different branching paths * include all branches which found unique states * track the reason for ending each branches execution * track the result type of each branch * make edges rely on history index instead of program_id, to avoid errors when looping * add state diff to query graph * drop redundant table info * rework graph to show state changes, rework logger to store state snapshots * show state on the previous operation * gather duplicate state changes into clusters to reduce repetition * draw invisible connections between unknown instructions by program_i * clean up dot format string escaping * add test case from #1960 (update returning all columns) * add tests for #2939 (update returning only the PK column) * allow inserting into a table using only the index * improve null handling of IfNull, fix output type of NewRowId * add NoResult nodes for branches which don't log a result, as a sanity check * add short-circuit to all logging operations * remove duplicate logging checks, and make logging enabled/disabled consistently depend on sqlx::explain instead of sqlx for capture & sqlx::explain for output * add failing test for awkwardly nested/filtered count subquery * handle special case of return operation to fix failing test * require trace log level instead of using whatever log level statement logging was configured to use
* convert logger to output a query graph * avoid duplicating branch paths to shrink output graph * separate different branching paths * include all branches which found unique states * track the reason for ending each branches execution * track the result type of each branch * make edges rely on history index instead of program_id, to avoid errors when looping * add state diff to query graph * drop redundant table info * rework graph to show state changes, rework logger to store state snapshots * show state on the previous operation * gather duplicate state changes into clusters to reduce repetition * draw invisible connections between unknown instructions by program_i * clean up dot format string escaping * add test case from launchbadge#1960 (update returning all columns) * add tests for launchbadge#2939 (update returning only the PK column) * allow inserting into a table using only the index * improve null handling of IfNull, fix output type of NewRowId * add NoResult nodes for branches which don't log a result, as a sanity check * add short-circuit to all logging operations * remove duplicate logging checks, and make logging enabled/disabled consistently depend on sqlx::explain instead of sqlx for capture & sqlx::explain for output * add failing test for awkwardly nested/filtered count subquery * handle special case of return operation to fix failing test * require trace log level instead of using whatever log level statement logging was configured to use
* convert logger to output a query graph * avoid duplicating branch paths to shrink output graph * separate different branching paths * include all branches which found unique states * track the reason for ending each branches execution * track the result type of each branch * make edges rely on history index instead of program_id, to avoid errors when looping * add state diff to query graph * drop redundant table info * rework graph to show state changes, rework logger to store state snapshots * show state on the previous operation * gather duplicate state changes into clusters to reduce repetition * draw invisible connections between unknown instructions by program_i * clean up dot format string escaping * add test case from launchbadge#1960 (update returning all columns) * add tests for launchbadge#2939 (update returning only the PK column) * allow inserting into a table using only the index * improve null handling of IfNull, fix output type of NewRowId * add NoResult nodes for branches which don't log a result, as a sanity check * add short-circuit to all logging operations * remove duplicate logging checks, and make logging enabled/disabled consistently depend on sqlx::explain instead of sqlx for capture & sqlx::explain for output * add failing test for awkwardly nested/filtered count subquery * handle special case of return operation to fix failing test * require trace log level instead of using whatever log level statement logging was configured to use
* convert logger to output a query graph * avoid duplicating branch paths to shrink output graph * separate different branching paths * include all branches which found unique states * track the reason for ending each branches execution * track the result type of each branch * make edges rely on history index instead of program_id, to avoid errors when looping * add state diff to query graph * drop redundant table info * rework graph to show state changes, rework logger to store state snapshots * show state on the previous operation * gather duplicate state changes into clusters to reduce repetition * draw invisible connections between unknown instructions by program_i * clean up dot format string escaping * add test case from launchbadge#1960 (update returning all columns) * add tests for launchbadge#2939 (update returning only the PK column) * allow inserting into a table using only the index * improve null handling of IfNull, fix output type of NewRowId * add NoResult nodes for branches which don't log a result, as a sanity check * add short-circuit to all logging operations * remove duplicate logging checks, and make logging enabled/disabled consistently depend on sqlx::explain instead of sqlx for capture & sqlx::explain for output * add failing test for awkwardly nested/filtered count subquery * handle special case of return operation to fix failing test * require trace log level instead of using whatever log level statement logging was configured to use
Track empty/non-empty/unknown-emptiness of cursors as part of the state. That enables Rewind/Last operations to filter which branch path to take (instead of always assuming both paths are potentially valid). Also updates Move/Copy to handle the use use of those opcodes against a range of registers.
Fixes #1923
Fixes #1979