Re: [sqlite] Query planner: Scanning subqueries vs using automatic covering index

2019-03-15 Thread Keith Medcalf

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

2019-03-15 Thread Keith Medcalf

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

2019-03-15 Thread Joshua Thomas Wise
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

2019-03-15 Thread Simon Slavin
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

2019-03-15 Thread niklas
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

2019-03-15 Thread Hick Gunter
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

2019-03-15 Thread Joshua Thomas Wise
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

2019-03-15 Thread Richard Hipp
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

2019-03-15 Thread Max Vlasov
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

2019-03-15 Thread Richard Hipp
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

2019-03-15 Thread Scott Perry
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

2019-03-15 Thread tjerzyko
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

2019-03-15 Thread R Smith
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

2019-03-15 Thread Simon Slavin
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

2019-03-15 Thread tjerzyko
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

2019-03-15 Thread Richard Hipp
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

2019-03-15 Thread Shawn Wagner
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

2019-03-15 Thread Wout Mertens
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

2019-03-15 Thread Wout Mertens
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

2019-03-15 Thread Mohsen Pahlevanzadeh

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

2019-03-15 Thread Mohsen Pahlevanzadeh

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

2019-03-15 Thread Keith Medcalf

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

2019-03-15 Thread Shawn Wagner
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

2019-03-15 Thread Hick Gunter
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