Hi all, I'm sorry about the inconvenience. I sent the e-mail below to [EMAIL PROTECTED] but I do not know if it's the correct e-mail to tell about possible bugs. So, I'm just forwarding my yesterday's e-mail in sqlite-users@sqlite.org . Please check the message below, any help is appreciated.
Begin forwarded message: > From: Alessandro Merolli <[EMAIL PROTECTED]> > Date: December 4, 2008 5:33:10 PM GMT-02:00 > To: [EMAIL PROTECTED] > Subject: Access violation in SQLITE3.DLL when using views joining > with other views ... > > Hi all, > > I'm facing some problems with SQLite since version 3.6.x was > released. > Until now, I was working with version 3.5.4 without errors but, I > need to upgrade to version 3.6 because it seems more efficient in > terms of database locking, performance, pragma options, etc... > > Last week I upgraded to version 3.6.6.2 and I'm still getting an > access violation with the following setup: > > - I'm working in Microsoft Windows XP SP3 (although the error was > reproduced in Linux and MacOS environments) > > - The database structure is defined like this: > CREATE TABLE Element ( > Code INTEGER PRIMARY KEY, > Name VARCHAR(60) > ); > > CREATE TABLE ElemOr ( > CodeOr INTEGER NOT NULL, > Code INTEGER NOT NULL, > PRIMARY KEY(CodeOr,Code) > ); > > CREATE TABLE ElemAnd ( > CodeAnd INTEGER, > Code INTEGER, > Attr1 INTEGER, > Attr2 INTEGER, > Attr3 INTEGER, > PRIMARY KEY(CodeAnd,Code) > ); > > - The data used in the test is: > INSERT INTO Element VALUES(1,'Elem1'); > INSERT INTO Element VALUES(2,'Elem2'); > INSERT INTO Element VALUES(3,'Elem3'); > INSERT INTO Element VALUES(4,'Elem4'); > INSERT INTO Element VALUES(5,'Elem5'); > INSERT INTO ElemOr Values(3,4); > INSERT INTO ElemOr Values(3,5); > INSERT INTO ElemAnd VALUES(1,3,1,1,1); > INSERT INTO ElemAnd VALUES(1,2,1,1,1); > > - And the views which are causing the access violation are defined > like this: > CREATE VIEW ElemView1 AS > SELECT > CAST(Element.Code AS VARCHAR(50)) AS ElemId, > Element.Code AS ElemCode, > Element.Name AS ElemName, > ElemAnd.Code AS InnerCode, > ElemAnd.Attr1 AS Attr1, > ElemAnd.Attr2 AS Attr2, > ElemAnd.Attr3 AS Attr3, > 0 AS Level, > 0 AS IsOrElem > FROM Element JOIN ElemAnd ON ElemAnd.CodeAnd=Element.Code > WHERE ElemAnd.CodeAnd NOT IN (SELECT CodeOr FROM ElemOr) > UNION ALL > SELECT > CAST(ElemOr.CodeOr AS VARCHAR(50)) AS ElemId, > Element.Code AS ElemCode, > Element.Name AS ElemName, > ElemOr.Code AS InnerCode, > NULL AS Attr1, > NULL AS Attr2, > NULL AS Attr3, > 0 AS Level, > 1 AS IsOrElem > FROM ElemOr JOIN Element ON Element.Code=ElemOr.CodeOr > ORDER BY ElemId, InnerCode; > > CREATE VIEW ElemView2 AS > SELECT > ElemId, > ElemCode, > ElemName, > InnerCode, > Attr1, > Attr2, > Attr3, > Level, > IsOrElem > FROM ElemView1 > UNION ALL > SELECT > Element.ElemId || '.' || InnerElem.ElemId AS ElemId, > InnerElem.ElemCode, > InnerElem.ElemName, > InnerElem.InnerCode, > InnerElem.Attr1, > InnerElem.Attr2, > InnerElem.Attr3, > InnerElem.Level+1, > InnerElem.IsOrElem > FROM ElemView1 AS Element > JOIN ElemView1 AS InnerElem ON Element.Level=0 AND > Element.InnerCode=InnerElem.ElemCode > ORDER BY ElemId, InnerCode; > > - Note that ElemView2 uses the ElemView1 joining itself. When I > query for data in ElemView1 (SELECT * FROM ElemView1) it returns > with success; but, when I query ElemView2 (SELECT * FROM ElemView2) > it fails, and an access violation occurs. Here is the stack in > Visual Studio 2005 SP1: > msvcr80d.dll!memcpy(unsigned char * dst=0x00ad3120, unsigned > char * src=0x1b8c71e0, unsigned long count=36) Line 188 > sqlite3.dll!sqlite3VdbeMemShallowCopy(Mem * pTo=0x00ad3120, > const Mem * pFrom=0x1b8c71e0, int srcType=256) Line 41982 + 0xf bytes > sqlite3.dll!sqlite3VdbeExec(Vdbe * p=0x00ac4c40) Line 47446 + > 0x3e bytes > sqlite3.dll!sqlite3Step(Vdbe * p=0x00ac4c40) Line 45476 + 0x9 > bytes > sqlite3.dll!sqlite3_step(sqlite3_stmt * pStmt=0x00ac4c40) Line > 45542 + 0x9 bytes > [application stack - ommited] > Seems that the pointer pFrom from sqlite3VdbeMemShallowCopy is > invalid. > > - The compiler options used are: > SQLITE_THREADSAFE=1; > TEMP_STORE=3; > SQLITE_DEFAULT_CACHE_SIZE=65568; > SQLITE_DEFAULT_TEMP_CACHE_SIZE=65568; > SQLITE_MAX_ATTACHED=30; > SQLITE_ENABLE_COLUMN_METADATA > > - I'm using the "amalgamation" version of the source code to > compile/link the sqlite3.dll > > Please, let me know if you need more details. > > Thanks for the help, > Merolli. > > > > > > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users