On Thu, Apr 26, 2012 at 5:07 PM, Steinar Midtskogen
<[email protected]>wrote:

> The sqlite3 struct has a pVtabCtx pointer.  It seems to me that it
> will be shared between multiple xCreate in action simultaniously and
> in that case cause disaster.  This can happen even if there is no
> thread concurrency going on using the same database connection.
>
> My xCreate has to run some queries in order to build its declare
> statement.  If a virtual table is queried inside xCreate causing a
> another xCreate to be called, the following sqlite3_declare_vtab will
> fail because pVtabCtx gets erased.
>

Fixed here:  http://www.sqlite.org/src/info/696a5a40bb


>
> Is this a design flaw of sqlite or intentionally designed this way for
> a good reason?
>
> The only workaround that I can think of is to fork() in xCreate having
> the child build the statement for the parent's sqlite3_declare_vtab(),
> pass that to the waiting parent and exit.  But in my case the child
> would also have to pass a lot of other variable length information
> back to the parent, which will involve a lot of IPC mess to implement.
>
> --
> Steinar
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>



-- 
D. Richard Hipp
[email protected]
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to