Using the writable_schema pragma "only" makes sqlite_master treated like any 
other table for <user> queries, it doesn't introduce extra logic to check for 
needed re-parsing or other <system> controlled stuff. So running an UPDATE 
query on sqlite_master becomes just like any <user> UPDATE on any normal table. 
It's seen as changing some text or numbers etc in some random table, and that's 
it. And since normal everyday <user> updates are not seen as changing the 
format of the schema, the <system> doesn't waste resources in re-parsing the 
schema, or in updating the file header with a new "schema cookie" value. Only 
queries that would have the <system> read or alter sqlite_master <in the 
background as the MASTER table and not as simply the target of a user query> 
are the things that would trigger the <system> to re-parse and update the file 
header. So CREATE, DROP, ALTER etc, or analyze sqlite_master.

(Appologies if I used too many <>'s for <emphasis> in plain text)


I think that's all correct anyway. Though I have been known to be wrong.

(You know, I used to be indecisive, but now I'm not so sure...)


-----Original Message-----
From: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] On 
Behalf Of sanhua.zh
Sent: Friday, October 21, 2016 3:24 AM
To: SQLite mailing list
Subject: Re: [sqlite] Drop Existing Table Results in 'no such table'

Hello Simon,
I try it again and I find that I can update the memory of connection itself by 
changing any other connections' schema_version.
This kind of behavior make me confused. Since it can tell other connections’ 
that the schema is changed, why can’t it tell to itself ?




原始邮件
发件人:sanhua.zhsanhua...@foxmail.com
收件人:SQLite mailing listsqlite-us...@mailinglists.sqlite.org
发送时间:2016年10月21日(周五) 14:48
主题:Re: [sqlite] Drop Existing Table Results in 'no such table'


You are changing the details saved on disk but not the copy in memory. Since 
reopen a new connection is a ugly way, is there any other way to update the 
memory ? I know that sqlite3InitCallback may update it, but I can’t find a way 
to invoke it. 原始邮件 发件人:Simon slavinslav...@bigfraud.org 收件人:SQLite mailing 
listsqlite-us...@mailinglists.sqlite.org 发送时间:2016年10月21日(周五) 14:39 主题:Re: 
[sqlite] Drop Existing Table Results in 'no such table' On 21 Oct 2016, at 
4:42am, sanhua.zh sanhua...@foxmail.com wrote: I am trying to rename a table by 
editing the sqlite_master directly. I do know there are a ‘ALTER TABLE … RENAME 
TO …’ syntax to do that. I just want to try it in this way. But I find that the 
‘no such table’ error occurs while I try to drop the renamed table. SQLite does 
not look at the sqlite_master table before executing each command. It has a 
copy of the database schema in the memory allocated to the connection. You are 
changing the details saved on disk but not the copy in memory. Only I close the 
connection or start a new connection, the renamed table can be dropped. That 
makes sense. Simon. _______________________________________________ 
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
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to