-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
sql: parse roundtrip #30141
Comments
Simplified to:
Also:
Problem: the WITH options are being copied from the import/backup to the restore. I can't get any other combination to produce the bug (two restores, backup+import). |
Wow nice find. |
Yeah this is so weird I don't even know where to look but it feels like a pointer is being duplicated somewhere? Maybe WITH is doing something bad? I have no idea. |
This just gets weirder and weirder. Works fine:
Starting to add yacc to the suspect list. |
I think I found it: the empty rules in Can you try and see what happens? Maybe we should also audit the other empty clauses throughout the grammar. |
Ugh... that's my fault. Sorry :( I didn't know that you had to explicitly nil stuff out! |
a yacc-generated parser is a giant switch in a loop and the data structure is a stack implemented as indexes into an array. Each occurrence of (That's true of all yacc generators that don't provide destructors for values. Bison and Lemon provide destructors, for example, go-yacc and old Bison don't) |
I'll make the patch! |
29692: ui: various glue fixes r=vilterp,couchand a=benesch This PR restores the "no UI installed" message in short binaries: ![image](https://user-images.githubusercontent.com/882976/45196553-e713b880-b22a-11e8-928a-06c7a2da0f63.png) I came across a few minor nits that seemed worth fixing too. 30135: sql: add '2.0' setting for distsql r=jordanlewis a=jordanlewis The 2.0 setting for distsql (both a cluster setting and a session setting) instructs the executor to use the 2.0 method of determining how to execute a query: the query runs via local sql unless the query is both distributable and recommended to be distributed, in which case it runs via the distsql and is actually distributed. Release note (sql change): add the '2.0' value for both the distsql session setting and the sql.defaults.distsql cluster setting, which instructs the database to use the 2.0 'auto' behavior for determining whether queries run via distsql or not. 30148: storage: add new metrics for the RaftEntryCache r=nvanbenschoten a=nvanbenschoten Four new metrics are introduced: - `raft.entrycache.bytes` - `raft.entrycache.size` - `raft.entrycache.accesses` - `raft.entrycache.hits` 30163: kv: Don't evict from leaseholder cache on context cancellations r=a-robinson a=a-robinson This was a major contributor to the hundreds of NotLeaseHolderErrors per second that we see whenever we run tpc-c at scale. A non-essential batch request like a QueryTxn would get cancelled, causing the range to be evicted from the leaseholder cache and the next request to that range to have to guess at the leaseholder. This is effectively an extension of #26764 that we should have thought to inspect more closely at the time. Actually fixes #23543, which was not fully fixed before. Although I still haven't seen the errors drop all the way to 0, so I'm letting tpc-c 10k continue to run for a while longer to verify that they do. They are continuing to decrease about 15 minutes in. I don't think getting to 0 will be possible because there are still occasional splits and lease transfers), but it looks like it should be able to get down to single digit errors per second from the hundreds it was at before this change. Also, avoid doing unnecessary sorting by latency of replicas in the dist_sender in the common case when we know who the leaseholder is and plan on sending our request there. 30197: sql/parser: fix the action for empty rules r=knz a=knz Fixes #30141. Co-authored-by: Nikhil Benesch <[email protected]> Co-authored-by: Jordan Lewis <[email protected]> Co-authored-by: Nathan VanBenschoten <[email protected]> Co-authored-by: Alex Robinson <[email protected]> Co-authored-by: Raphael 'kena' Poss <[email protected]>
Parse followed by Format is not idempotent: "WITH ident ( EXTRACT , INTERLEAVE , ident , ORDINALITY , ident ) AS ( IMPORT TABLE ident . FULL FROM INTERVAL ( PLACEHOLDER ) WITH ident = PLACEHOLDER ) , SCHEMA ( BOOL , BIGINT ) AS ( RESTORE ident FROM IS ) DELETE FROM ident . RETURNING . ILIKE * ORDER BY PRIMARY KEY TRIM . ident . GROUPING DESC RETURNING NOTHING" -> "WITH ident ("extract", interleave, ident, "ordinality", ident) AS (IMPORT TABLE ident.full FROM INTERVAL 'placeholder' WITH ident = 'placeholder') , schema (bool, "bigint") AS (RESTORE TABLE ident FROM 'is') DELETE FROM ident.returning.ilike ORDER BY PRIMARY KEY "trim".ident.grouping DESC RETURNING NOTHING" != "WITH ident ("extract", interleave, ident, "ordinality", ident) AS (IMPORT TABLE ident.full FROM INTERVAL 'placeholder' WITH ident = 'placeholder') , schema (bool, "bigint") AS (RESTORE TABLE ident FROM 'is' WITH ident = 'placeholder') DELETE FROM ident.returning.ilike ORDER BY PRIMARY KEY "trim".ident.grouping DESC RETURNING NOTHING"
The text was updated successfully, but these errors were encountered: