Re: [sqlite] Query planner: Scanning subqueries vs using automatic covering index
Of course, the correlated version returns all books, not just the ones that have at least one author, were read at least once, and have at least one genre. --- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >-Original Message- >From: sqlite-users [mailto:sqlite-users- >boun...@mailinglists.sqlite.org] On Behalf Of Keith Medcalf >Sent: Friday, 15 March, 2019 14:44 >To: SQLite mailing list >Subject: Re: [sqlite] Query planner: Scanning subqueries vs using >automatic covering index > > >The current tip of trunk produced the same results demonstrated by >Niklas in his original post for his original testcase for me. > >I would have written the query as a simple query with correlated >subqueries to get the concatenated data as it is a "more natural" >declaration of what is wanted (in my opinion anyway), rather than re- >writing into joins. > > select BookID, > Title, > ( > SELECT group_concat(ltrim("First Name" || ' ' || "Last >Name"),',') > FROM AuthorBooks JOIN Authors USING (AuthorID) >WHERE BookID == Books.BookID > ) as "Author(s)", > ( > SELECT group_concat("Date read",', ') > FROM DatesRead >WHERE BookID == Books.BookID > ) as "Date(s)", > ( > SELECT group_concat(Genre,', ') > FROM BookGenres JOIN Genres USING (GenreID) >WHERE BookID == Books.BookID > ) AS "Genre(s)" >FROM Books >ORDER BY BookID; > >--- >The fact that there's a Highway to Hell but only a Stairway to Heaven >says a lot about anticipated traffic volume. > >>-Original Message- >>From: sqlite-users [mailto:sqlite-users- >>boun...@mailinglists.sqlite.org] On Behalf Of niklas >>Sent: Friday, 15 March, 2019 01:36 >>To: sqlite-users@mailinglists.sqlite.org >>Subject: [sqlite] Query planner: Scanning subqueries vs using >>automatic covering index >> >>I recently noticed some very slow queries for my sqlite book >>database. >>Turns out that it happened due to the query planner decided to scan >>sub-queries instead of using an automatic covering index to search >>them. >> >>The database contains about 3000 entries and with two subqueries it >>took a noticable time to run, with three subqueries I had to give up >>and >>abort to save the CPU from overheating. >> >>Using indexes only take milliseconds in all cases. >> >>Dropping analyze (sqlite_stat1) information from the database made >>the problem go away, i.e. made sqlite use index instead of scanning. >>As did adding a few more columns to the ORDER BY part. >> >>These sql statements should be enough to demonstrate the problem. >>I am using sqlite 3.25.1 >> >>** >>create.txt >>** >> >>BEGIN; >> >>CREATE TABLE "Authors" ( >>"AuthorID" INTEGER PRIMARY KEY, >>"Last Name" TEXT NOT NULL, >>"First Name" TEXT NOT NULL); >> >>CREATE TABLE "Books" ( >>"BookID" INTEGER PRIMARY KEY, >>"Title" TEXT NOT NULL); >> >>CREATE TABLE "Genres"( >>"GenreID" INTEGER PRIMARY KEY, >>"Genre" TEXT UNIQUE NOT NULL); >> >>CREATE TABLE "DatesRead"( >>"BookID" INTEGER, >>"Date Read" TEXT, >>PRIMARY KEY("BookID", "Date Read"), >>FOREIGN KEY(BookID) REFERENCES Books(BookID)) WITHOUT ROWID; >> >>CREATE TABLE "AuthorBooks"( >>"BookID" INTEGER, >>"AuthorID" INTEGER, >>PRIMARY KEY("BookID", "AuthorID" ), >>FOREIGN KEY(BookID) REFERENCES Books(BookID), >>FOREIGN KEY(AuthorID) REFERENCES Authors(AuthorID)) WITHOUT >>ROWID; >> >>CREATE TABLE "BookGenres"( >>"BookID" INTEGER, >>"GenreID" INTEGER, >>PRIMARY KEY("BookID", "GenreID" ), >>FOREIGN KEY(BookID) REFERENCES Books(BookID), >>FOREIGN KEY(GenreID) REFERENCES Genres(GenreID)) WITHOUT ROWID; >> >>ANALYZE; >>INSERT INTO sqlite_stat1 VALUES('BookGenres','BookGenres','3190 2 >>1'); >>INSERT INTO sqlite_stat1 VALUES('DatesRead','DatesRead','3047 2 1'); >>INSERT INTO sqlite_stat1 VALUES('AuthorBooks','AuthorBooks','3549 2 >>1'); >>INSERT INTO sqlite_stat1 VALUES('Authors',NULL,'1329'); >>INSERT INTO sqlite_stat1 VALUES('Books',NULL,'2978'); >>INSERT INTO sqlite_stat1 >>VALUES('Genres','sqlite_autoindex_Genres_1','112 >>1'); >> >>COMMIT; >> >> >>queries.txt >> >> >>select ""; >>select "order by bookid only"; >>select ""; >> >>EXPLAIN QUERY PLAN >>SELECT BookID,Title,"Author(s)","Date(s)","Genre(s)" >>FROM Books >>JOIN (SELECT BookID, group_concat(ltrim("First Name"||' '||"Last >>Name"),', >>') AS 'Author(s)' FROM Books JOIN AuthorBooks USING(BookID) JOIN >>Authors >>USING(AuthorID) GROUP BY BookID) USING(BookID) >>JOIN (SELECT BookID, group_concat("Date read",', ') AS 'Date(s)' >FROM >>Books >>JOIN DatesRead USING(BookID) GROUP BY BookID) USING(BookID) >>JOIN (SELECT BookID, group_concat(Genre,', ') AS 'Genre(s)' FROM >>Books JOIN >>BookGenres USING(BookID) JOIN Genres
Re: [sqlite] Query planner: Scanning subqueries vs using automatic covering index
The current tip of trunk produced the same results demonstrated by Niklas in his original post for his original testcase for me. I would have written the query as a simple query with correlated subqueries to get the concatenated data as it is a "more natural" declaration of what is wanted (in my opinion anyway), rather than re-writing into joins. select BookID, Title, ( SELECT group_concat(ltrim("First Name" || ' ' || "Last Name"),',') FROM AuthorBooks JOIN Authors USING (AuthorID) WHERE BookID == Books.BookID ) as "Author(s)", ( SELECT group_concat("Date read",', ') FROM DatesRead WHERE BookID == Books.BookID ) as "Date(s)", ( SELECT group_concat(Genre,', ') FROM BookGenres JOIN Genres USING (GenreID) WHERE BookID == Books.BookID ) AS "Genre(s)" FROM Books ORDER BY BookID; --- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >-Original Message- >From: sqlite-users [mailto:sqlite-users- >boun...@mailinglists.sqlite.org] On Behalf Of niklas >Sent: Friday, 15 March, 2019 01:36 >To: sqlite-users@mailinglists.sqlite.org >Subject: [sqlite] Query planner: Scanning subqueries vs using >automatic covering index > >I recently noticed some very slow queries for my sqlite book >database. >Turns out that it happened due to the query planner decided to scan >sub-queries instead of using an automatic covering index to search >them. > >The database contains about 3000 entries and with two subqueries it >took a noticable time to run, with three subqueries I had to give up >and >abort to save the CPU from overheating. > >Using indexes only take milliseconds in all cases. > >Dropping analyze (sqlite_stat1) information from the database made >the problem go away, i.e. made sqlite use index instead of scanning. >As did adding a few more columns to the ORDER BY part. > >These sql statements should be enough to demonstrate the problem. >I am using sqlite 3.25.1 > >** >create.txt >** > >BEGIN; > >CREATE TABLE "Authors" ( >"AuthorID" INTEGER PRIMARY KEY, >"Last Name" TEXT NOT NULL, >"First Name" TEXT NOT NULL); > >CREATE TABLE "Books" ( >"BookID" INTEGER PRIMARY KEY, >"Title" TEXT NOT NULL); > >CREATE TABLE "Genres"( >"GenreID" INTEGER PRIMARY KEY, >"Genre" TEXT UNIQUE NOT NULL); > >CREATE TABLE "DatesRead"( >"BookID" INTEGER, >"Date Read" TEXT, >PRIMARY KEY("BookID", "Date Read"), >FOREIGN KEY(BookID) REFERENCES Books(BookID)) WITHOUT ROWID; > >CREATE TABLE "AuthorBooks"( >"BookID" INTEGER, >"AuthorID" INTEGER, >PRIMARY KEY("BookID", "AuthorID" ), >FOREIGN KEY(BookID) REFERENCES Books(BookID), >FOREIGN KEY(AuthorID) REFERENCES Authors(AuthorID)) WITHOUT >ROWID; > >CREATE TABLE "BookGenres"( >"BookID" INTEGER, >"GenreID" INTEGER, >PRIMARY KEY("BookID", "GenreID" ), >FOREIGN KEY(BookID) REFERENCES Books(BookID), >FOREIGN KEY(GenreID) REFERENCES Genres(GenreID)) WITHOUT ROWID; > >ANALYZE; >INSERT INTO sqlite_stat1 VALUES('BookGenres','BookGenres','3190 2 >1'); >INSERT INTO sqlite_stat1 VALUES('DatesRead','DatesRead','3047 2 1'); >INSERT INTO sqlite_stat1 VALUES('AuthorBooks','AuthorBooks','3549 2 >1'); >INSERT INTO sqlite_stat1 VALUES('Authors',NULL,'1329'); >INSERT INTO sqlite_stat1 VALUES('Books',NULL,'2978'); >INSERT INTO sqlite_stat1 >VALUES('Genres','sqlite_autoindex_Genres_1','112 >1'); > >COMMIT; > > >queries.txt > > >select ""; >select "order by bookid only"; >select ""; > >EXPLAIN QUERY PLAN >SELECT BookID,Title,"Author(s)","Date(s)","Genre(s)" >FROM Books >JOIN (SELECT BookID, group_concat(ltrim("First Name"||' '||"Last >Name"),', >') AS 'Author(s)' FROM Books JOIN AuthorBooks USING(BookID) JOIN >Authors >USING(AuthorID) GROUP BY BookID) USING(BookID) >JOIN (SELECT BookID, group_concat("Date read",', ') AS 'Date(s)' FROM >Books >JOIN DatesRead USING(BookID) GROUP BY BookID) USING(BookID) >JOIN (SELECT BookID, group_concat(Genre,', ') AS 'Genre(s)' FROM >Books JOIN >BookGenres USING(BookID) JOIN Genres USING(GenreID) GROUP BY BookID) >USING(BookID) >ORDER BY BookID; > >select "---"; >select "order by bookid and some other fields too"; >select "--"; > >EXPLAIN QUERY PLAN >SELECT BookID,Title,"Author(s)","Date(s)","Genre(s)" >FROM Books >JOIN (SELECT BookID, group_concat(ltrim("First Name"||' '||"Last >Name"),', >') AS 'Author(s)' FROM Books JOIN AuthorBooks USING(BookID) JOIN >Authors >USING(AuthorID) GROUP BY BookID) USING(BookID) >JOIN (SELECT BookID, group_concat("Date read",', ') AS 'Date(s)' FROM >Books >JOIN DatesRead USING(BookID) GROUP BY BookID) USING(BookID) >JOIN (SELECT BookID, group_concat(Genre,', ') AS 'Genre(s)'
Re: [sqlite] [EXTERNAL] Re: Missing docs
Sure it’s documented in the release log, but it’s not documented in the C-API (https://sqlite.org/c3ref/expanded_sql.html), and it’s not documented among every other compile-time option (https://www.sqlite.org/compile.html). I don’t know why you listed that second link. It doesn’t mention anything about SQLITE_ENABLE_NORMALIZE. Anyone reading that documentation would simply assume it’s available by default. Perhaps some CDN is causing us to view different versions of that page? This is what I see: https://imgur.com/J6ctQqT > On Mar 15, 2019, at 1:33 PM, Hick Gunter wrote: > > Actually It is documented > > See https://sqlite.org/changes.html look for release 3.26.0 > and https://sqlite.org/c3ref/expanded_sql.html > and https://sqlite.org/releaselog/3_26_0.html where the compile option is > mentioned > > > -Ursprüngliche Nachricht- > Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] Im > Auftrag von Joshua Thomas Wise > Gesendet: Freitag, 15. März 2019 18:26 > An: SQLite mailing list > Betreff: [EXTERNAL] Re: [sqlite] Missing docs > > Yes sorry, it was a erroneous copy-paste. I was referring to > sqlite3_normalized_sql(). > > As Keith said, it’s only available if the SQLITE_ENABLE_NORMALIZE compile > option is used, but that is not documented anywhere. > > >> On Mar 15, 2019, at 3:56 AM, Keith Medcalf wrote: >> >> >> These docs: >> >> https://sqlite.org/c3ref/expanded_sql.html >> >> The sqlite3_sql and sqlite3_expanded_sql are always be available. >> >> The sqlite3_normalized_sql interface is only available if the >> SQLITE_ENABLE_NORMALIZE compile option is used. >> >> --- >> The fact that there's a Highway to Hell but only a Stairway to Heaven says a >> lot about anticipated traffic volume. >> >>> -Original Message- >>> From: sqlite-users [mailto:sqlite-users- >>> boun...@mailinglists.sqlite.org] On Behalf Of Joshua Thomas Wise >>> Sent: Thursday, 14 March, 2019 15:40 >>> To: SQLite mailing list >>> Subject: [sqlite] Missing docs >>> >>> Nowhere in the current documentation does it mention the existence of >>> the SQLITE_ENABLE_NORMALIZE compile-time option, and nowhere does it >>> mention that sqldark_source_normalized() requires that option to be >>> present. >>> >>> The docs should probably mention this. >>> >>> - Josh >>> ___ >>> sqlite-users mailing list >>> sqlite-users@mailinglists.sqlite.org >>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> >> >> >> ___ >> sqlite-users mailing list >> sqlite-users@mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > ___ > Gunter Hick | Software Engineer | Scientific Games International GmbH | > Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) > +43 1 80100 - 0 > > May be privileged. May be confidential. Please delete if not the addressee. > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Query planner: Scanning subqueries vs using automatic covering index
On 15 Mar 2019, at 7:35am, niklas wrote: > Dropping analyze (sqlite_stat1) information from the database made > the problem go away, i.e. made sqlite use index instead of scanning. Instead of dropping ANALYZE information, did you try updating it instead, by running ANALYZE again ? Ah ... > ANALYZE; > INSERT INTO sqlite_stat1 VALUES('BookGenres','BookGenres','3190 2 1'); How do we know your values for sqlite_stat1 are right ? Why aren't you just leaving ANALZE to do its job ? Also, you are missing out on part of what ANALYZE does. As well as looking at your schema, ANALYZE also considers the 'chunkiness' of the data in each indexed column. Run it with data in the table, with the data as convincing as possible in terms of number of rows and the values in each column. In your create.txt I would insert data in your tables, then put ANALYZE just before COMMIT. Curious to know if this improves matters for you. I'm not certain. Simon. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] Query planner: Scanning subqueries vs using automatic covering index
I recently noticed some very slow queries for my sqlite book database. Turns out that it happened due to the query planner decided to scan sub-queries instead of using an automatic covering index to search them. The database contains about 3000 entries and with two subqueries it took a noticable time to run, with three subqueries I had to give up and abort to save the CPU from overheating. Using indexes only take milliseconds in all cases. Dropping analyze (sqlite_stat1) information from the database made the problem go away, i.e. made sqlite use index instead of scanning. As did adding a few more columns to the ORDER BY part. These sql statements should be enough to demonstrate the problem. I am using sqlite 3.25.1 ** create.txt ** BEGIN; CREATE TABLE "Authors" ( "AuthorID" INTEGER PRIMARY KEY, "Last Name" TEXT NOT NULL, "First Name" TEXT NOT NULL); CREATE TABLE "Books" ( "BookID" INTEGER PRIMARY KEY, "Title" TEXT NOT NULL); CREATE TABLE "Genres"( "GenreID" INTEGER PRIMARY KEY, "Genre" TEXT UNIQUE NOT NULL); CREATE TABLE "DatesRead"( "BookID" INTEGER, "Date Read" TEXT, PRIMARY KEY("BookID", "Date Read"), FOREIGN KEY(BookID) REFERENCES Books(BookID)) WITHOUT ROWID; CREATE TABLE "AuthorBooks"( "BookID" INTEGER, "AuthorID" INTEGER, PRIMARY KEY("BookID", "AuthorID" ), FOREIGN KEY(BookID) REFERENCES Books(BookID), FOREIGN KEY(AuthorID) REFERENCES Authors(AuthorID)) WITHOUT ROWID; CREATE TABLE "BookGenres"( "BookID" INTEGER, "GenreID" INTEGER, PRIMARY KEY("BookID", "GenreID" ), FOREIGN KEY(BookID) REFERENCES Books(BookID), FOREIGN KEY(GenreID) REFERENCES Genres(GenreID)) WITHOUT ROWID; ANALYZE; INSERT INTO sqlite_stat1 VALUES('BookGenres','BookGenres','3190 2 1'); INSERT INTO sqlite_stat1 VALUES('DatesRead','DatesRead','3047 2 1'); INSERT INTO sqlite_stat1 VALUES('AuthorBooks','AuthorBooks','3549 2 1'); INSERT INTO sqlite_stat1 VALUES('Authors',NULL,'1329'); INSERT INTO sqlite_stat1 VALUES('Books',NULL,'2978'); INSERT INTO sqlite_stat1 VALUES('Genres','sqlite_autoindex_Genres_1','112 1'); COMMIT; queries.txt select ""; select "order by bookid only"; select ""; EXPLAIN QUERY PLAN SELECT BookID,Title,"Author(s)","Date(s)","Genre(s)" FROM Books JOIN (SELECT BookID, group_concat(ltrim("First Name"||' '||"Last Name"),', ') AS 'Author(s)' FROM Books JOIN AuthorBooks USING(BookID) JOIN Authors USING(AuthorID) GROUP BY BookID) USING(BookID) JOIN (SELECT BookID, group_concat("Date read",', ') AS 'Date(s)' FROM Books JOIN DatesRead USING(BookID) GROUP BY BookID) USING(BookID) JOIN (SELECT BookID, group_concat(Genre,', ') AS 'Genre(s)' FROM Books JOIN BookGenres USING(BookID) JOIN Genres USING(GenreID) GROUP BY BookID) USING(BookID) ORDER BY BookID; select "---"; select "order by bookid and some other fields too"; select "--"; EXPLAIN QUERY PLAN SELECT BookID,Title,"Author(s)","Date(s)","Genre(s)" FROM Books JOIN (SELECT BookID, group_concat(ltrim("First Name"||' '||"Last Name"),', ') AS 'Author(s)' FROM Books JOIN AuthorBooks USING(BookID) JOIN Authors USING(AuthorID) GROUP BY BookID) USING(BookID) JOIN (SELECT BookID, group_concat("Date read",', ') AS 'Date(s)' FROM Books JOIN DatesRead USING(BookID) GROUP BY BookID) USING(BookID) JOIN (SELECT BookID, group_concat(Genre,', ') AS 'Genre(s)' FROM Books JOIN BookGenres USING(BookID) JOIN Genres USING(GenreID) GROUP BY BookID) USING(BookID) ORDER BY BookID, Title, "Author(s)", "Date(s)"; Test run: del test.db type create.txt | sqlite3 test.db type queries.txt | sqlite3 test.db Output: order by bookid only QUERY PLAN |--MATERIALIZE 1 | |--SCAN TABLE Books | |--SEARCH TABLE AuthorBooks USING PRIMARY KEY (BookID=?) | `--SEARCH TABLE Authors USING INTEGER PRIMARY KEY (rowid=?) |--MATERIALIZE 2 | |--SCAN TABLE Books | `--SEARCH TABLE DatesRead USING PRIMARY KEY (BookID=?) |--MATERIALIZE 3 | |--SCAN TABLE Books | |--SEARCH TABLE BookGenres USING PRIMARY KEY (BookID=?) | `--SEARCH TABLE Genres USING INTEGER PRIMARY KEY (rowid=?) |--SCAN SUBQUERY 1 |--SCAN SUBQUERY 2 |--SCAN SUBQUERY 3 |--SEARCH TABLE Books USING INTEGER PRIMARY KEY (rowid=?) `--USE TEMP B-TREE FOR ORDER BY --- order by bookid and some other fields too -- QUERY PLAN |--MATERIALIZE 1 | |--SCAN TABLE Books | |--SEARCH TABLE AuthorBooks USING PRIMARY KEY (BookID=?) | `--SEARCH TABLE Authors USING INTEGER PRIMARY KEY (rowid=?) |--MATERIALIZE 2 | |--SCAN TABLE Books | `--SEARCH TABLE DatesRead USING PRIMARY KEY (BookID=?) |--MATERIALIZE 3 | |--SCAN TABLE Books | |--SEARCH TABLE BookGenres USING PRIMARY KEY (BookID=?) | `--SEARCH TABLE Genres USING INTEGER
Re: [sqlite] [EXTERNAL] Re: Missing docs
Actually It is documented See https://sqlite.org/changes.html look for release 3.26.0 and https://sqlite.org/c3ref/expanded_sql.html and https://sqlite.org/releaselog/3_26_0.html where the compile option is mentioned -Ursprüngliche Nachricht- Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] Im Auftrag von Joshua Thomas Wise Gesendet: Freitag, 15. März 2019 18:26 An: SQLite mailing list Betreff: [EXTERNAL] Re: [sqlite] Missing docs Yes sorry, it was a erroneous copy-paste. I was referring to sqlite3_normalized_sql(). As Keith said, it’s only available if the SQLITE_ENABLE_NORMALIZE compile option is used, but that is not documented anywhere. > On Mar 15, 2019, at 3:56 AM, Keith Medcalf wrote: > > > These docs: > > https://sqlite.org/c3ref/expanded_sql.html > > The sqlite3_sql and sqlite3_expanded_sql are always be available. > > The sqlite3_normalized_sql interface is only available if the > SQLITE_ENABLE_NORMALIZE compile option is used. > > --- > The fact that there's a Highway to Hell but only a Stairway to Heaven says a > lot about anticipated traffic volume. > >> -Original Message- >> From: sqlite-users [mailto:sqlite-users- >> boun...@mailinglists.sqlite.org] On Behalf Of Joshua Thomas Wise >> Sent: Thursday, 14 March, 2019 15:40 >> To: SQLite mailing list >> Subject: [sqlite] Missing docs >> >> Nowhere in the current documentation does it mention the existence of >> the SQLITE_ENABLE_NORMALIZE compile-time option, and nowhere does it >> mention that sqldark_source_normalized() requires that option to be >> present. >> >> The docs should probably mention this. >> >> - Josh >> ___ >> sqlite-users mailing list >> sqlite-users@mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0 May be privileged. May be confidential. Please delete if not the addressee. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Missing docs
Yes sorry, it was a erroneous copy-paste. I was referring to sqlite3_normalized_sql(). As Keith said, it’s only available if the SQLITE_ENABLE_NORMALIZE compile option is used, but that is not documented anywhere. > On Mar 15, 2019, at 3:56 AM, Keith Medcalf wrote: > > > These docs: > > https://sqlite.org/c3ref/expanded_sql.html > > The sqlite3_sql and sqlite3_expanded_sql are always be available. > > The sqlite3_normalized_sql interface is only available if the > SQLITE_ENABLE_NORMALIZE compile option is used. > > --- > The fact that there's a Highway to Hell but only a Stairway to Heaven says a > lot about anticipated traffic volume. > >> -Original Message- >> From: sqlite-users [mailto:sqlite-users- >> boun...@mailinglists.sqlite.org] On Behalf Of Joshua Thomas Wise >> Sent: Thursday, 14 March, 2019 15:40 >> To: SQLite mailing list >> Subject: [sqlite] Missing docs >> >> Nowhere in the current documentation does it mention the existence of >> the SQLITE_ENABLE_NORMALIZE compile-time option, and nowhere does it >> mention that sqldark_source_normalized() requires that option to be >> present. >> >> The docs should probably mention this. >> >> - Josh >> ___ >> sqlite-users mailing list >> sqlite-users@mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Malformed schema (orphan index) on particular db with the version 3.27.2
On 3/15/19, Max Vlasov wrote: > > But 3.27.2 said > malformed database schema ({sqlite_autoindex_mytablename}_1) - orphan > index. This error message arises from enhanced early detection of corrupt database files that was added to version 3.27.x. Do you still have the original database, before you VACUUM-ed it? If so, what does it say if you run "PRAGMA integrity_check" on that database. Can you share the database with me, through private email? There is always the possibility that the enhanced early detection of corrupt databases is giving a false-positive. -- D. Richard Hipp d...@sqlite.org ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] Malformed schema (orphan index) on particular db with the version 3.27.2
Hi, I have a database that used in software since probably 2010, there are many variants of this database at my hd and everything was fine with it starting 3.6.10 through 3.26.00, I'm not sure about every version, but during the version history, at least several was used to open it. But 3.27.2 said malformed database schema ({sqlite_autoindex_mytablename}_1) - orphan index. if I open the db in 3.26.0 and make VACUUM, then 3.27.2 is ok with it. If I delete every row except the first one from the table in 3.26, version 3.27.2 still says it's bad. I tried to google something about this and some of results at the web contained "orphan index" with a ticket somewhere near jan 2019. I'm not sure this is related, but maybe some recent change might affect this. If sqlite now is more constraint with indexes errors due some reasons, I will probably should reopen my existing databases to check. But if this is due some bug, fixing it would probably save much time for me :) Thanks Max ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Corruption of database when renaming a table
On 3/15/19, Scott Perry wrote: > The behaviour of ALTER TABLE changed in 3.25.0 and breaks compatibility with > many existing applications. Your statements (corrected for use of single > quotes, as Ryan mentioned) work for me when `PRAGMA legacy_alter_table=1;`. All true. But even so, SQLite shouldn't leave the schema in a corrupt state - it should roll the schema back to something usable. I'm still investigating, but this looks like a real bug. I did observe that the bug only occurs if the sequence of ALTER TABLE statements that Tomasz provides occurs inside a transaction. If you do them all separately, no schema corruption occurs. Looking at the database after the error, I see that the SQLITE_MASTER table has an entry with a NAME of 'CAM_IN_FILE' and a TYPE of 'table' but with SQL of: 'CREATE TABLE "cam_in_file_22705_10035"(...)'. In other words, the sqlite_master.name does not agree with the name in the CREATE TABLE statement in sqlite_master.sql. -- D. Richard Hipp d...@sqlite.org ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Corruption of database when renaming a table
The behaviour of ALTER TABLE changed in 3.25.0 and breaks compatibility with many existing applications. Your statements (corrected for use of single quotes, as Ryan mentioned) work for me when `PRAGMA legacy_alter_table=1;`. More info on SQLite's website: https://www.sqlite.org/lang_altertable.html Scott > On Mar 15, 2019, at 06:29, tjerzyko wrote: > > I'm having corruption problem with a certain database file. You can download > it here: > https://drive.google.com/file/d/1RCPoPgoLdc2VgF2uX2zPFrkheFi9z3b_/view?usp=sharing > It was created with SQLite 3.8.7 or older version (I cannot say for sure now) > I open it with sqlite3.exe and run the following script: > > begin; > alter table fs_params rename to fs_params_20291_27910; > CREATE TABLE FS_PARAMS(FS_NO INTEGER,FS_OWNER_ID TEXT,FS_OWNER_NAME TEXT); > drop table 'fs_params_20291_27910'; > alter table file_locks rename to file_locks_27446_24559; > CREATE TABLE FILE_LOCKS(FILE_ID INTEGER, PLAYER_ID TEXT UNIQUE, USER_NAME > TEXT, FOREIGN KEY(FILE_ID) REFERENCES FILE(FILE_ID)); > drop table 'file_locks_27446_24559'; > CREATE INDEX L_FILE_ID ON FILE_LOCKS(FILE_ID); > alter table cam_in_file rename to cam_in_file_22705_10035; > end; > > It throws the following error: > Error: near line 9: error in trigger T_FILE_BDELETE: no such table: > main.file_locks_27446_24559 > > Probably my script is incorrect, but another thing worries me more. I open > the database again and: > > e:\recorder\DB\LOOP-003>sqlite3 loop-003.dat > SQLite version 3.27.2 2019-02-25 16:06:06 > Enter ".help" for usage hints. > sqlite> .tables > AUDIO_IN_FILE FS_ATTRIBUTES REC_RECORDING_MODE > AUDIO_IN_FRAGMENT FS_PARAMS REC_WORKING_MODE > CAM_IN_FILEINTEGRITY_TEST STORAGE_BLOCK > CAM_IN_FRAGMENTLOOP_FRAGMENT T_SCHEDULE > FILE REC_LATEST_CONNECTION > FILE_LOCKS REC_LIST_TIMESTAMP > sqlite> select * from CAM_IN_FILE; > Error: no such table: CAM_IN_FILE > sqlite> > > The table exists, but not quite. The database seems to be corrupted. > > When I tried the same procedure on database created with newer SQLite > version, there were no such problems. > > Tomasz Jerzykowski > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Corruption of database when renaming a table
Link to my database in in the original post. https://drive.google.com/file/d/1RCPoPgoLdc2VgF2uX2zPFrkheFi9z3b_/view?usp=sharing Tomasz Jerzykowski W dniu 2019-03-15 14:46:19 użytkownik R Smith napisał: > For a start, do not use single quotes for table names. In SQL, DB object > identifiers can either be unquoted or contained in double-quotes. SQLite > specifically even allows backticks or square brackets for compatibility, > but nobody likes single quotes. > > I.e. change this: > > drop table 'fs_params_20291_27910'; > > To this: > > drop table "fs_params_20291_27910"; > > > Another thing SQL cares about is the case you use in names, but again SQLite > allows referring to a table without needing to match the schema case. (Just > putting this out there to satisfy my internal pedantry). > > Lastly, you probably have a trigger on one of these tables you intend to > rename, but the trigger has internally code referring to another table (or > some such) causing the error. Could you please send the full schema of your > DB? > > using the sqlite3 CLI will output it on issuing: .fullschema > > Or post a DB on a download site somewhere if it isn't sensitive. > > > Thanks, > Ryan > > On 2019/03/15 3:29 PM, tjerzyko wrote: > > I'm having corruption problem with a certain database file. You can > > download it here: > > https://drive.google.com/file/d/1RCPoPgoLdc2VgF2uX2zPFrkheFi9z3b_/view?usp=sharing > > It was created with SQLite 3.8.7 or older version (I cannot say for sure > > now) > > I open it with sqlite3.exe and run the following script: > > > > begin; > > alter table fs_params rename to fs_params_20291_27910; > > CREATE TABLE FS_PARAMS(FS_NO INTEGER,FS_OWNER_ID TEXT,FS_OWNER_NAME TEXT); > > drop table 'fs_params_20291_27910'; > > alter table file_locks rename to file_locks_27446_24559; > > CREATE TABLE FILE_LOCKS(FILE_ID INTEGER, PLAYER_ID TEXT UNIQUE, USER_NAME > > TEXT, FOREIGN KEY(FILE_ID) REFERENCES FILE(FILE_ID)); > > drop table 'file_locks_27446_24559'; > > CREATE INDEX L_FILE_ID ON FILE_LOCKS(FILE_ID); > > alter table cam_in_file rename to cam_in_file_22705_10035; > > end; > > > > It throws the following error: > > Error: near line 9: error in trigger T_FILE_BDELETE: no such table: > > main.file_locks_27446_24559 > > > > Probably my script is incorrect, but another thing worries me more. I open > > the database again and: > > > > e:\recorder\DB\LOOP-003>sqlite3 loop-003.dat > > SQLite version 3.27.2 2019-02-25 16:06:06 > > Enter ".help" for usage hints. > > sqlite> .tables > > AUDIO_IN_FILE FS_ATTRIBUTES REC_RECORDING_MODE > > AUDIO_IN_FRAGMENT FS_PARAMS REC_WORKING_MODE > > CAM_IN_FILEINTEGRITY_TEST STORAGE_BLOCK > > CAM_IN_FRAGMENTLOOP_FRAGMENT T_SCHEDULE > > FILE REC_LATEST_CONNECTION > > FILE_LOCKS REC_LIST_TIMESTAMP > > sqlite> select * from CAM_IN_FILE; > > Error: no such table: CAM_IN_FILE > > sqlite> > > > > The table exists, but not quite. The database seems to be corrupted. > > > > When I tried the same procedure on database created with newer SQLite > > version, there were no such problems. > > > > Tomasz Jerzykowski > > > > > > ___ > > sqlite-users mailing list > > sqlite-users@mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Corruption of database when renaming a table
For a start, do not use single quotes for table names. In SQL, DB object identifiers can either be unquoted or contained in double-quotes. SQLite specifically even allows backticks or square brackets for compatibility, but nobody likes single quotes. I.e. change this: drop table 'fs_params_20291_27910'; To this: drop table "fs_params_20291_27910"; Another thing SQL cares about is the case you use in names, but again SQLite allows referring to a table without needing to match the schema case. (Just putting this out there to satisfy my internal pedantry). Lastly, you probably have a trigger on one of these tables you intend to rename, but the trigger has internally code referring to another table (or some such) causing the error. Could you please send the full schema of your DB? using the sqlite3 CLI will output it on issuing: .fullschema Or post a DB on a download site somewhere if it isn't sensitive. Thanks, Ryan On 2019/03/15 3:29 PM, tjerzyko wrote: I'm having corruption problem with a certain database file. You can download it here: https://drive.google.com/file/d/1RCPoPgoLdc2VgF2uX2zPFrkheFi9z3b_/view?usp=sharing It was created with SQLite 3.8.7 or older version (I cannot say for sure now) I open it with sqlite3.exe and run the following script: begin; alter table fs_params rename to fs_params_20291_27910; CREATE TABLE FS_PARAMS(FS_NO INTEGER,FS_OWNER_ID TEXT,FS_OWNER_NAME TEXT); drop table 'fs_params_20291_27910'; alter table file_locks rename to file_locks_27446_24559; CREATE TABLE FILE_LOCKS(FILE_ID INTEGER, PLAYER_ID TEXT UNIQUE, USER_NAME TEXT, FOREIGN KEY(FILE_ID) REFERENCES FILE(FILE_ID)); drop table 'file_locks_27446_24559'; CREATE INDEX L_FILE_ID ON FILE_LOCKS(FILE_ID); alter table cam_in_file rename to cam_in_file_22705_10035; end; It throws the following error: Error: near line 9: error in trigger T_FILE_BDELETE: no such table: main.file_locks_27446_24559 Probably my script is incorrect, but another thing worries me more. I open the database again and: e:\recorder\DB\LOOP-003>sqlite3 loop-003.dat SQLite version 3.27.2 2019-02-25 16:06:06 Enter ".help" for usage hints. sqlite> .tables AUDIO_IN_FILE FS_ATTRIBUTES REC_RECORDING_MODE AUDIO_IN_FRAGMENT FS_PARAMS REC_WORKING_MODE CAM_IN_FILEINTEGRITY_TEST STORAGE_BLOCK CAM_IN_FRAGMENTLOOP_FRAGMENT T_SCHEDULE FILE REC_LATEST_CONNECTION FILE_LOCKS REC_LIST_TIMESTAMP sqlite> select * from CAM_IN_FILE; Error: no such table: CAM_IN_FILE sqlite> The table exists, but not quite. The database seems to be corrupted. When I tried the same procedure on database created with newer SQLite version, there were no such problems. Tomasz Jerzykowski ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] difference between *.db *.db3 *.sqlie2 *.slite3
On 15 Mar 2019, at 10:29am, Mohsen Pahlevanzadeh wrote: > What differ between *.db *.db3 *.sqlie2 *.slite3 files? Be very careful of .sqlite2 files. The name suggests an obsolete version of SQLite that is incompatible with everything from the last decade. Apart from that, SQLite databases can have any extension. SQLite doesn't care. And it has only one database file format. Simon. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] Corruption of database when renaming a table
I'm having corruption problem with a certain database file. You can download it here: https://drive.google.com/file/d/1RCPoPgoLdc2VgF2uX2zPFrkheFi9z3b_/view?usp=sharing It was created with SQLite 3.8.7 or older version (I cannot say for sure now) I open it with sqlite3.exe and run the following script: begin; alter table fs_params rename to fs_params_20291_27910; CREATE TABLE FS_PARAMS(FS_NO INTEGER,FS_OWNER_ID TEXT,FS_OWNER_NAME TEXT); drop table 'fs_params_20291_27910'; alter table file_locks rename to file_locks_27446_24559; CREATE TABLE FILE_LOCKS(FILE_ID INTEGER, PLAYER_ID TEXT UNIQUE, USER_NAME TEXT, FOREIGN KEY(FILE_ID) REFERENCES FILE(FILE_ID)); drop table 'file_locks_27446_24559'; CREATE INDEX L_FILE_ID ON FILE_LOCKS(FILE_ID); alter table cam_in_file rename to cam_in_file_22705_10035; end; It throws the following error: Error: near line 9: error in trigger T_FILE_BDELETE: no such table: main.file_locks_27446_24559 Probably my script is incorrect, but another thing worries me more. I open the database again and: e:\recorder\DB\LOOP-003>sqlite3 loop-003.dat SQLite version 3.27.2 2019-02-25 16:06:06 Enter ".help" for usage hints. sqlite> .tables AUDIO_IN_FILE FS_ATTRIBUTES REC_RECORDING_MODE AUDIO_IN_FRAGMENT FS_PARAMS REC_WORKING_MODE CAM_IN_FILEINTEGRITY_TEST STORAGE_BLOCK CAM_IN_FRAGMENTLOOP_FRAGMENT T_SCHEDULE FILE REC_LATEST_CONNECTION FILE_LOCKS REC_LIST_TIMESTAMP sqlite> select * from CAM_IN_FILE; Error: no such table: CAM_IN_FILE sqlite> The table exists, but not quite. The database seems to be corrupted. When I tried the same procedure on database created with newer SQLite version, there were no such problems. Tomasz Jerzykowski ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] sqlite.org has expired ssl cert
On 3/15/19, Wout Mertens wrote: > it expired in January… Looks like the Let's Encrypt client isn't > auto-updating the certificates. I got a new cert yesterday, or maybe the day before, and it was working fine. Then overnight, something happened to revert the cert to one from last year. I'm not sure how that happened. But the error only lasted for a few minutes. You just happened to be unlucky and hit it at an inopportune moment. The website should now be using the correct cert. I have deleted the older certs from the system, with the hope that that will prevent them from reverting again. -- D. Richard Hipp d...@sqlite.org ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] difference between *.db *.db3 *.sqlie2 *.slite3
A sqlite database is just a file. You can name it whatever you want. People who like file extensions often use such ones (I assume you meant .sqlite2 and .sqlite3? The first would likely be used to indicate a sqlite 2 database, assuming you can find any software that still uses it...) On Fri, Mar 15, 2019, 3:29 AM Mohsen Pahlevanzadeh wrote: > What differ between *.db *.db3 *.sqlie2 *.slite3 files? > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] mysql to sqlite
SQLite doesn't enforce types, but it does accept them. They're documented at https://www.sqlite.org/datatype3.html Basically, you want INTEGER and TEXT. There's no date type. I recommend storing those as epoch integer, or in ISO text format, so that they're easy to parse and sort correctly. Wout. On Fri, Mar 15, 2019 at 11:27 AM Mohsen Pahlevanzadeh < moh...@pahlevanzadeh.net> wrote: > Hello, > > > I have some tables in mysql with the following data types: > > smallint > > text > > varchar > > date > > > > I don't know sqlite, What are corresponding above data types in sqlite? > > > > --Regards > > Mohsen > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] sqlite.org has expired ssl cert
it expired in January… Looks like the Let's Encrypt client isn't auto-updating the certificates. Wout. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] difference between *.db *.db3 *.sqlie2 *.slite3
What differ between *.db *.db3 *.sqlie2 *.slite3 files? ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] mysql to sqlite
Hello, I have some tables in mysql with the following data types: smallint text varchar date I don't know sqlite, What are corresponding above data types in sqlite? --Regards Mohsen ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Missing docs
These docs: https://sqlite.org/c3ref/expanded_sql.html The sqlite3_sql and sqlite3_expanded_sql are always be available. The sqlite3_normalized_sql interface is only available if the SQLITE_ENABLE_NORMALIZE compile option is used. --- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >-Original Message- >From: sqlite-users [mailto:sqlite-users- >boun...@mailinglists.sqlite.org] On Behalf Of Joshua Thomas Wise >Sent: Thursday, 14 March, 2019 15:40 >To: SQLite mailing list >Subject: [sqlite] Missing docs > >Nowhere in the current documentation does it mention the existence of >the SQLITE_ENABLE_NORMALIZE compile-time option, and nowhere does it >mention that sqldark_source_normalized() requires that option to be >present. > >The docs should probably mention this. > >- Josh >___ >sqlite-users mailing list >sqlite-users@mailinglists.sqlite.org >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] [EXTERNAL] Missing docs
Or just boring old autocorrect shenanigans... On Fri, Mar 15, 2019, 12:20 AM Hick Gunter wrote: > Which release of sqlite are you referrring to? I am unaware of any > function call with a prefix of sqldark in release 3.24? Maybe this is an > addon/wrapper/whatever from the Sith? > > -Ursprüngliche Nachricht- > Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] > Im Auftrag von Joshua Thomas Wise > Gesendet: Donnerstag, 14. März 2019 22:40 > An: SQLite mailing list > Betreff: [EXTERNAL] [sqlite] Missing docs > > Nowhere in the current documentation does it mention the existence of the > SQLITE_ENABLE_NORMALIZE compile-time option, and nowhere does it mention > that sqldark_source_normalized() requires that option to be present. > > The docs should probably mention this. > > - Josh > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > ___ > Gunter Hick | Software Engineer | Scientific Games International GmbH | > Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) > +43 1 80100 - 0 > > May be privileged. May be confidential. Please delete if not the addressee. > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] [EXTERNAL] Missing docs
Which release of sqlite are you referrring to? I am unaware of any function call with a prefix of sqldark in release 3.24? Maybe this is an addon/wrapper/whatever from the Sith? -Ursprüngliche Nachricht- Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] Im Auftrag von Joshua Thomas Wise Gesendet: Donnerstag, 14. März 2019 22:40 An: SQLite mailing list Betreff: [EXTERNAL] [sqlite] Missing docs Nowhere in the current documentation does it mention the existence of the SQLITE_ENABLE_NORMALIZE compile-time option, and nowhere does it mention that sqldark_source_normalized() requires that option to be present. The docs should probably mention this. - Josh ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0 May be privileged. May be confidential. Please delete if not the addressee. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users