Skip to content

gh-64662: Add virtual table support to sqlite3.Connection.iterdump #108340

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

Merged
merged 9 commits into from
Aug 27, 2023

Conversation

erlend-aasland
Copy link
Contributor

@erlend-aasland erlend-aasland commented Aug 22, 2023

@erlend-aasland erlend-aasland marked this pull request as ready for review August 23, 2023 10:56
@erlend-aasland
Copy link
Contributor Author

@felixxm, would you like to review this? This is pretty much @palaviv's patch, adapted to main by me.

@erlend-aasland
Copy link
Contributor Author

In businho/django-migrations-ci#38 (comment), @iurisilvio mentions that foreign key support must be disabled. ISTM that that aligns with the behaviour of the SQLite shell:

SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> PRAGMA foreign_keys=ON;
sqlite> create virtual table test using fts4(example);
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
PRAGMA writable_schema=ON;
INSERT INTO sqlite_schema(type,name,tbl_name,rootpage,sql)VALUES('table','test','test',0,'CREATE VIRTUAL TABLE test using fts4(example)');
CREATE TABLE IF NOT EXISTS 'test_content'(docid INTEGER PRIMARY KEY, 'c0example');
CREATE TABLE IF NOT EXISTS 'test_segments'(blockid INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'test_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx));
CREATE TABLE IF NOT EXISTS 'test_docsize'(docid INTEGER PRIMARY KEY, size BLOB);
CREATE TABLE IF NOT EXISTS 'test_stat'(id INTEGER PRIMARY KEY, value BLOB);
PRAGMA writable_schema=OFF;
COMMIT;
sqlite> ^D

@erlend-aasland
Copy link
Contributor Author

erlend-aasland commented Aug 23, 2023

Further experiments show that PRAGMA foreign_keys=OFF; is prepended no matter if virtual tables are involved or not, so we should fix that separately IMO.

@felixxm
Copy link
Contributor

felixxm commented Aug 25, 2023

Maybe it's just me, but the number of different quotes in _iterdump() makes it hard for me to understand this code, check out #108472 (feel-free to reject it).

@erlend-aasland
Copy link
Contributor Author

Thanks for the review, Mariusz!

@erlend-aasland erlend-aasland merged commit d0160c7 into python:main Aug 27, 2023
@miss-islington

This comment was marked as outdated.

@erlend-aasland erlend-aasland deleted the sqlite/dumpiter branch August 27, 2023 22:18
@miss-islington

This comment was marked as outdated.

@miss-islington

This comment was marked as outdated.

@bedevere-bot

This comment was marked as off-topic.

@erlend-aasland

This comment was marked as outdated.

@erlend-aasland erlend-aasland removed needs backport to 3.11 only security fixes needs backport to 3.12 only security fixes labels Aug 28, 2023
erlend-aasland added a commit to erlend-aasland/cpython that referenced this pull request Aug 28, 2023
…n.iterdump (python#108340)

(cherry picked from commit d0160c7)

Co-authored-by: Aviv Palivoda <[email protected]>
@bedevere-bot
Copy link

GH-108563 is a backport of this pull request to the 3.12 branch.

erlend-aasland added a commit to erlend-aasland/cpython that referenced this pull request Aug 28, 2023
…n.iterdump (python#108340)

(cherry picked from commit d0160c7)

Co-authored-by: Aviv Palivoda <[email protected]>
@bedevere-bot
Copy link

GH-108564 is a backport of this pull request to the 3.11 branch.

@bedevere-bot

This comment was marked as duplicate.

@bedevere-bot

This comment was marked as duplicate.

erlend-aasland added a commit that referenced this pull request Aug 28, 2023
…dump (#108340) (#108564)

(cherry picked from commit d0160c7)

Co-authored-by: Aviv Palivoda <[email protected]>
Yhg1s pushed a commit that referenced this pull request Aug 28, 2023
…dump (#108340) (#108563)

* [3.12] gh-64662: Add virtual table support to sqlite3.Connection.iterdump (#108340)

(cherry picked from commit d0160c7)

Co-authored-by: Aviv Palivoda <[email protected]>

* The _quote_value helper is not part of 3.12; spell out the replacement

* With quotes

* Ok, let's use explicit quoting

---------

Co-authored-by: Aviv Palivoda <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants