KEMBAR78
gh-64662: Add virtual table support to sqlite3.Connection.iterdump by erlend-aasland · Pull Request #108340 · python/cpython · GitHub
Skip to content

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 <palaviv@gmail.com>
@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 <palaviv@gmail.com>
@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 <palaviv@gmail.com>
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 <palaviv@gmail.com>

* 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 <palaviv@gmail.com>
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