You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(447) |
Nov
(163) |
Dec
(57) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2005 |
Jan
(172) |
Feb
|
Mar
(123) |
Apr
(64) |
May
(1) |
Jun
(278) |
Jul
(89) |
Aug
(97) |
Sep
(62) |
Oct
(53) |
Nov
(119) |
Dec
(60) |
| 2006 |
Jan
(76) |
Feb
(1094) |
Mar
(363) |
Apr
(163) |
May
(57) |
Jun
(43) |
Jul
(39) |
Aug
(15) |
Sep
(33) |
Oct
(62) |
Nov
(8) |
Dec
|
| 2007 |
Jan
(9) |
Feb
(34) |
Mar
(2) |
Apr
(14) |
May
(8) |
Jun
(40) |
Jul
(21) |
Aug
(1) |
Sep
(20) |
Oct
(15) |
Nov
(26) |
Dec
|
| 2008 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(32) |
Jun
|
Jul
|
Aug
(3) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(7) |
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <dav...@us...> - 2006-10-04 00:47:13
|
Revision: 1544
http://svn.sourceforge.net/frontierkernel/?rev=1544&view=rev
Author: davidgewirtz
Date: 2006-10-03 17:47:08 -0700 (Tue, 03 Oct 2006)
Log Message:
-----------
Updating sqlite-source-3.3.7 for rename to sqlite3
Added Paths:
-----------
Frontier/branches/SQLite/Common/sqlite3/
Removed Paths:
-------------
Frontier/branches/SQLite/Common/sqlite-source-3.3.7/
Copied: Frontier/branches/SQLite/Common/sqlite3 (from rev 1542, Frontier/branches/SQLite/Common/sqlite-source-3.3.7)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-04 00:45:56
|
Revision: 1543
http://svn.sourceforge.net/frontierkernel/?rev=1543&view=rev
Author: davidgewirtz
Date: 2006-10-03 17:45:51 -0700 (Tue, 03 Oct 2006)
Log Message:
-----------
Deleting old code, making room for new vendor drop to be moved in.
Removed Paths:
-------------
Frontier/branches/SQLite/Common/sqlite3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-10-04 00:43:49
|
Revision: 1537
http://svn.sourceforge.net/frontierkernel/?rev=1537&view=rev
Author: creecode
Date: 2006-10-03 10:41:05 -0700 (Tue, 03 Oct 2006)
Log Message:
-----------
minor formatting tweak
Modified Paths:
--------------
Frontier/branches/FSRef_Migration/Common/headers/file.h
Modified: Frontier/branches/FSRef_Migration/Common/headers/file.h
===================================================================
--- Frontier/branches/FSRef_Migration/Common/headers/file.h 2006-10-03 03:15:50 UTC (rev 1536)
+++ Frontier/branches/FSRef_Migration/Common/headers/file.h 2006-10-03 17:41:05 UTC (rev 1537)
@@ -291,7 +291,7 @@
extern boolean filesize (const ptrfilespec , long *);
-extern boolean fileisfolder (const ptrfilespec , boolean *);
+extern boolean fileisfolder ( const ptrfilespec , boolean * );
extern boolean fileisvolume (const ptrfilespec );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-10-04 00:43:47
|
Revision: 1533
http://svn.sourceforge.net/frontierkernel/?rev=1533&view=rev
Author: creecode
Date: 2006-10-02 20:00:14 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
Tagging sqlite-source-3.3.7. 2nd try because I messed up the first time around.
Added Paths:
-----------
Frontier/vendor/sqlite3/sqlite-source-3.3.7/current/
Copied: Frontier/vendor/sqlite3/sqlite-source-3.3.7/current (from rev 1532, Frontier/vendor/sqlite3/current)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-10-04 00:43:46
|
Revision: 1534
http://svn.sourceforge.net/frontierkernel/?rev=1534&view=rev
Author: creecode
Date: 2006-10-02 20:06:10 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
delete because the files ended up in the wrong place.
Removed Paths:
-------------
Frontier/vendor/sqlite3/sqlite-source-3.3.7/current/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-10-04 00:43:44
|
Revision: 1535
http://svn.sourceforge.net/frontierkernel/?rev=1535&view=rev
Author: creecode
Date: 2006-10-02 20:14:36 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
i'm trying to re-copy from current to this directory but my last attempt didn't work out, so let me try this...
Removed Paths:
-------------
Frontier/vendor/sqlite3/sqlite-source-3.3.7/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-10-04 00:43:44
|
Revision: 1536
http://svn.sourceforge.net/frontierkernel/?rev=1536&view=rev
Author: creecode
Date: 2006-10-02 20:15:50 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
Tagging sqlite-source-3.3.7
Added Paths:
-----------
Frontier/vendor/sqlite3/sqlite-source-3.3.7/
Copied: Frontier/vendor/sqlite3/sqlite-source-3.3.7 (from rev 1535, Frontier/vendor/sqlite3/current)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-04 00:27:10
|
Revision: 1542
http://svn.sourceforge.net/frontierkernel/?rev=1542&view=rev
Author: davidgewirtz
Date: 2006-10-03 17:27:03 -0700 (Tue, 03 Oct 2006)
Log Message:
-----------
Fixing move from vendor drop.
Added Paths:
-----------
Frontier/branches/SQLite/Common/sqlite-source-3.3.7/
Copied: Frontier/branches/SQLite/Common/sqlite-source-3.3.7 (from rev 1541, Frontier/vendor/sqlite3/sqlite-source-3.3.7)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-10-03 02:37:41
|
Revision: 1532
http://svn.sourceforge.net/frontierkernel/?rev=1532&view=rev
Author: creecode
Date: 2006-10-02 19:37:36 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
replace files that were pulled from the wrong sqlite 3.3.7 source download, use the pure C source files
Modified Paths:
--------------
Frontier/vendor/sqlite3/current/keywordhash.h
Frontier/vendor/sqlite3/current/opcodes.c
Frontier/vendor/sqlite3/current/opcodes.h
Frontier/vendor/sqlite3/current/parse.c
Frontier/vendor/sqlite3/current/parse.h
Frontier/vendor/sqlite3/current/sqlite3.h
Modified: Frontier/vendor/sqlite3/current/keywordhash.h
===================================================================
--- Frontier/vendor/sqlite3/current/keywordhash.h 2006-10-03 02:33:50 UTC (rev 1531)
+++ Frontier/vendor/sqlite3/current/keywordhash.h 2006-10-03 02:37:36 UTC (rev 1532)
@@ -1,6 +1,6 @@
-/* Hash score: 159 */
+/* Hash score: 167 */
static int keywordCode(const char *z, int n){
- static const char zText[537] =
+ static const char zText[544] =
"ABORTABLEFTEMPORARYADDATABASELECTHENDEFAULTRANSACTIONATURALTER"
"AISEACHECKEYAFTEREFERENCESCAPELSEXCEPTRIGGEREGEXPLAINITIALLYANALYZE"
"XCLUSIVEXISTSTATEMENTANDEFERRABLEATTACHAVINGLOBEFOREIGNOREINDEX"
@@ -9,11 +9,11 @@
"CURRENT_DATECURRENT_TIMESTAMPLANDESCDETACHDISTINCTDROPRAGMATCH"
"FAILIMITFROMFULLGROUPDATEIFIMMEDIATEINSERTINSTEADINTOFFSETISNULL"
"JOINORDEREPLACEOUTERESTRICTPRIMARYQUERYRIGHTROLLBACKROWHENUNION"
- "UNIQUEUSINGVACUUMVALUESVIEWHERE";
+ "UNIQUEUSINGVACUUMVALUESVIEWHEREVIRTUAL";
static const unsigned char aHash[127] = {
92, 80, 107, 91, 0, 4, 0, 0, 114, 0, 83, 0, 0,
95, 44, 76, 93, 0, 106, 109, 97, 90, 0, 10, 0, 0,
- 113, 0, 110, 103, 0, 28, 48, 0, 41, 0, 0, 65, 71,
+ 113, 0, 117, 103, 0, 28, 48, 0, 41, 0, 0, 65, 71,
0, 63, 19, 0, 105, 36, 104, 0, 108, 74, 0, 0, 33,
0, 61, 37, 0, 8, 0, 115, 38, 12, 0, 77, 40, 25,
66, 0, 0, 31, 81, 53, 30, 50, 20, 88, 0, 34, 0,
@@ -22,7 +22,7 @@
54, 6, 85, 0, 0, 49, 94, 0, 102, 0, 70, 0, 0,
15, 0, 116, 51, 56, 0, 2, 55, 0, 111,
};
- static const unsigned char aNext[116] = {
+ static const unsigned char aNext[117] = {
0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
0, 11, 0, 0, 0, 0, 5, 13, 0, 7, 0, 0, 0,
@@ -31,9 +31,9 @@
0, 0, 0, 0, 0, 0, 0, 0, 73, 42, 0, 24, 60,
21, 0, 79, 0, 0, 68, 0, 0, 84, 46, 0, 0, 0,
0, 0, 0, 0, 0, 39, 96, 98, 0, 0, 100, 0, 32,
- 0, 14, 27, 78, 0, 57, 89, 0, 35, 0, 62, 0,
+ 0, 14, 27, 78, 0, 57, 89, 0, 35, 0, 62, 0, 110,
};
- static const unsigned char aLen[116] = {
+ static const unsigned char aLen[117] = {
5, 5, 4, 4, 9, 2, 3, 8, 2, 6, 4, 3, 7,
11, 2, 7, 5, 5, 4, 5, 3, 5, 10, 6, 4, 6,
7, 6, 7, 9, 3, 7, 9, 6, 9, 3, 10, 6, 6,
@@ -42,9 +42,9 @@
6, 6, 8, 10, 9, 6, 5, 12, 12, 17, 4, 4, 6,
8, 2, 4, 6, 5, 4, 5, 4, 4, 5, 6, 2, 9,
6, 7, 4, 2, 6, 3, 6, 4, 5, 7, 5, 8, 7,
- 5, 5, 8, 3, 4, 5, 6, 5, 6, 6, 4, 5,
+ 5, 5, 8, 3, 4, 5, 6, 5, 6, 6, 4, 5, 7,
};
- static const unsigned short int aOffset[116] = {
+ static const unsigned short int aOffset[117] = {
0, 4, 7, 10, 10, 14, 19, 21, 26, 27, 32, 34, 36,
42, 51, 52, 57, 61, 65, 67, 71, 74, 78, 86, 91, 94,
99, 105, 108, 113, 118, 122, 128, 136, 141, 150, 152, 162, 167,
@@ -53,9 +53,9 @@
269, 275, 281, 289, 296, 305, 311, 316, 328, 328, 344, 348, 352,
358, 359, 366, 369, 373, 378, 381, 386, 390, 394, 397, 403, 405,
414, 420, 427, 430, 430, 433, 436, 442, 446, 450, 457, 461, 469,
- 476, 481, 486, 494, 496, 500, 505, 511, 516, 522, 528, 531,
+ 476, 481, 486, 494, 496, 500, 505, 511, 516, 522, 528, 531, 536,
};
- static const unsigned char aCode[116] = {
+ static const unsigned char aCode[117] = {
TK_ABORT, TK_TABLE, TK_JOIN_KW, TK_TEMP, TK_TEMP,
TK_OR, TK_ADD, TK_DATABASE, TK_AS, TK_SELECT,
TK_THEN, TK_END, TK_DEFAULT, TK_TRANSACTION,TK_ON,
@@ -79,12 +79,12 @@
TK_REPLACE, TK_JOIN_KW, TK_RESTRICT, TK_PRIMARY, TK_QUERY,
TK_JOIN_KW, TK_ROLLBACK, TK_ROW, TK_WHEN, TK_UNION,
TK_UNIQUE, TK_USING, TK_VACUUM, TK_VALUES, TK_VIEW,
- TK_WHERE,
+ TK_WHERE, TK_VIRTUAL,
};
int h, i;
if( n<2 ) return TK_ID;
- h = ((sqlite3UpperToLower[((unsigned char*)z)[0]]*4) ^
- (sqlite3UpperToLower[((unsigned char*)z)[n-1]]*3) ^
+ h = ((charMap(z[0])*4) ^
+ (charMap(z[n-1])*3) ^
n) % 127;
for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){
if( aLen[i]==n && sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){
Modified: Frontier/vendor/sqlite3/current/opcodes.c
===================================================================
--- Frontier/vendor/sqlite3/current/opcodes.c 2006-10-03 02:33:50 UTC (rev 1531)
+++ Frontier/vendor/sqlite3/current/opcodes.c 2006-10-03 02:37:36 UTC (rev 1532)
@@ -3,145 +3,147 @@
#if !defined(SQLITE_OMIT_EXPLAIN) || !defined(NDEBUG) || defined(VDBE_PROFILE) || defined(SQLITE_DEBUG)
const char *const sqlite3OpcodeNames[] = { "?",
/* 1 */ "MemLoad",
- /* 2 */ "Column",
- /* 3 */ "SetCookie",
- /* 4 */ "IfMemPos",
- /* 5 */ "Sequence",
- /* 6 */ "MoveGt",
- /* 7 */ "RowKey",
- /* 8 */ "OpenWrite",
- /* 9 */ "If",
- /* 10 */ "Pop",
- /* 11 */ "CollSeq",
- /* 12 */ "OpenRead",
- /* 13 */ "Expire",
- /* 14 */ "AutoCommit",
- /* 15 */ "IntegrityCk",
+ /* 2 */ "VNext",
+ /* 3 */ "Column",
+ /* 4 */ "SetCookie",
+ /* 5 */ "IfMemPos",
+ /* 6 */ "Sequence",
+ /* 7 */ "MoveGt",
+ /* 8 */ "RowKey",
+ /* 9 */ "OpenWrite",
+ /* 10 */ "If",
+ /* 11 */ "Pop",
+ /* 12 */ "VRowid",
+ /* 13 */ "CollSeq",
+ /* 14 */ "OpenRead",
+ /* 15 */ "Expire",
/* 16 */ "Not",
- /* 17 */ "Sort",
- /* 18 */ "Function",
- /* 19 */ "Noop",
- /* 20 */ "Return",
- /* 21 */ "NewRowid",
- /* 22 */ "IfMemNeg",
- /* 23 */ "Variable",
- /* 24 */ "String",
- /* 25 */ "RealAffinity",
- /* 26 */ "ParseSchema",
- /* 27 */ "Close",
- /* 28 */ "CreateIndex",
- /* 29 */ "IsUnique",
- /* 30 */ "IdxIsNull",
- /* 31 */ "NotFound",
- /* 32 */ "Int64",
- /* 33 */ "MustBeInt",
- /* 34 */ "Halt",
- /* 35 */ "Rowid",
- /* 36 */ "IdxLT",
- /* 37 */ "AddImm",
- /* 38 */ "Statement",
- /* 39 */ "RowData",
- /* 40 */ "MemMax",
- /* 41 */ "Push",
- /* 42 */ "NotExists",
- /* 43 */ "MemIncr",
- /* 44 */ "Gosub",
- /* 45 */ "Integer",
- /* 46 */ "MemInt",
- /* 47 */ "Prev",
- /* 48 */ "CreateTable",
- /* 49 */ "Last",
- /* 50 */ "IdxRowid",
- /* 51 */ "MakeIdxRec",
- /* 52 */ "ResetCount",
- /* 53 */ "FifoWrite",
- /* 54 */ "Callback",
- /* 55 */ "ContextPush",
- /* 56 */ "DropTrigger",
- /* 57 */ "DropIndex",
- /* 58 */ "IdxGE",
- /* 59 */ "Or",
- /* 60 */ "And",
- /* 61 */ "IdxDelete",
- /* 62 */ "Vacuum",
- /* 63 */ "MoveLe",
- /* 64 */ "IsNull",
- /* 65 */ "NotNull",
- /* 66 */ "Ne",
- /* 67 */ "Eq",
- /* 68 */ "Gt",
- /* 69 */ "Le",
- /* 70 */ "Lt",
- /* 71 */ "Ge",
- /* 72 */ "IfNot",
- /* 73 */ "BitAnd",
- /* 74 */ "BitOr",
- /* 75 */ "ShiftLeft",
- /* 76 */ "ShiftRight",
- /* 77 */ "Add",
- /* 78 */ "Subtract",
- /* 79 */ "Multiply",
- /* 80 */ "Divide",
- /* 81 */ "Remainder",
- /* 82 */ "Concat",
- /* 83 */ "Negative",
- /* 84 */ "DropTable",
- /* 85 */ "BitNot",
- /* 86 */ "String8",
- /* 87 */ "MakeRecord",
- /* 88 */ "Delete",
- /* 89 */ "AggFinal",
- /* 90 */ "Dup",
- /* 91 */ "Goto",
- /* 92 */ "TableLock",
- /* 93 */ "FifoRead",
- /* 94 */ "Clear",
- /* 95 */ "IdxGT",
- /* 96 */ "MoveLt",
- /* 97 */ "VerifyCookie",
- /* 98 */ "AggStep",
- /* 99 */ "Pull",
- /* 100 */ "SetNumColumns",
- /* 101 */ "AbsValue",
- /* 102 */ "Transaction",
- /* 103 */ "ContextPop",
- /* 104 */ "Next",
- /* 105 */ "IdxInsert",
- /* 106 */ "Distinct",
- /* 107 */ "Insert",
- /* 108 */ "Destroy",
- /* 109 */ "ReadCookie",
- /* 110 */ "ForceInt",
- /* 111 */ "LoadAnalysis",
- /* 112 */ "OpenVirtual",
- /* 113 */ "Explain",
- /* 114 */ "IfMemZero",
- /* 115 */ "OpenPseudo",
- /* 116 */ "Null",
- /* 117 */ "Blob",
- /* 118 */ "MemStore",
- /* 119 */ "Rewind",
- /* 120 */ "MoveGe",
- /* 121 */ "MemMove",
- /* 122 */ "MemNull",
- /* 123 */ "Found",
- /* 124 */ "Real",
- /* 125 */ "HexBlob",
- /* 126 */ "NullRow",
- /* 127 */ "NotUsed_127",
- /* 128 */ "NotUsed_128",
- /* 129 */ "NotUsed_129",
- /* 130 */ "NotUsed_130",
- /* 131 */ "NotUsed_131",
- /* 132 */ "NotUsed_132",
- /* 133 */ "NotUsed_133",
- /* 134 */ "NotUsed_134",
- /* 135 */ "NotUsed_135",
+ /* 17 */ "AutoCommit",
+ /* 18 */ "IntegrityCk",
+ /* 19 */ "Sort",
+ /* 20 */ "Function",
+ /* 21 */ "Noop",
+ /* 22 */ "Return",
+ /* 23 */ "NewRowid",
+ /* 24 */ "IfMemNeg",
+ /* 25 */ "Variable",
+ /* 26 */ "String",
+ /* 27 */ "RealAffinity",
+ /* 28 */ "ParseSchema",
+ /* 29 */ "VOpen",
+ /* 30 */ "Close",
+ /* 31 */ "CreateIndex",
+ /* 32 */ "IsUnique",
+ /* 33 */ "IdxIsNull",
+ /* 34 */ "NotFound",
+ /* 35 */ "Int64",
+ /* 36 */ "MustBeInt",
+ /* 37 */ "Halt",
+ /* 38 */ "Rowid",
+ /* 39 */ "IdxLT",
+ /* 40 */ "AddImm",
+ /* 41 */ "Statement",
+ /* 42 */ "RowData",
+ /* 43 */ "MemMax",
+ /* 44 */ "Push",
+ /* 45 */ "NotExists",
+ /* 46 */ "MemIncr",
+ /* 47 */ "Gosub",
+ /* 48 */ "Integer",
+ /* 49 */ "MemInt",
+ /* 50 */ "Prev",
+ /* 51 */ "VColumn",
+ /* 52 */ "CreateTable",
+ /* 53 */ "Last",
+ /* 54 */ "IdxRowid",
+ /* 55 */ "MakeIdxRec",
+ /* 56 */ "ResetCount",
+ /* 57 */ "FifoWrite",
+ /* 58 */ "Callback",
+ /* 59 */ "ContextPush",
+ /* 60 */ "DropTrigger",
+ /* 61 */ "Or",
+ /* 62 */ "And",
+ /* 63 */ "DropIndex",
+ /* 64 */ "IdxGE",
+ /* 65 */ "IdxDelete",
+ /* 66 */ "IsNull",
+ /* 67 */ "NotNull",
+ /* 68 */ "Ne",
+ /* 69 */ "Eq",
+ /* 70 */ "Gt",
+ /* 71 */ "Le",
+ /* 72 */ "Lt",
+ /* 73 */ "Ge",
+ /* 74 */ "Vacuum",
+ /* 75 */ "BitAnd",
+ /* 76 */ "BitOr",
+ /* 77 */ "ShiftLeft",
+ /* 78 */ "ShiftRight",
+ /* 79 */ "Add",
+ /* 80 */ "Subtract",
+ /* 81 */ "Multiply",
+ /* 82 */ "Divide",
+ /* 83 */ "Remainder",
+ /* 84 */ "Concat",
+ /* 85 */ "Negative",
+ /* 86 */ "MoveLe",
+ /* 87 */ "BitNot",
+ /* 88 */ "String8",
+ /* 89 */ "IfNot",
+ /* 90 */ "DropTable",
+ /* 91 */ "MakeRecord",
+ /* 92 */ "Delete",
+ /* 93 */ "AggFinal",
+ /* 94 */ "Dup",
+ /* 95 */ "Goto",
+ /* 96 */ "TableLock",
+ /* 97 */ "FifoRead",
+ /* 98 */ "Clear",
+ /* 99 */ "IdxGT",
+ /* 100 */ "MoveLt",
+ /* 101 */ "VerifyCookie",
+ /* 102 */ "AggStep",
+ /* 103 */ "Pull",
+ /* 104 */ "SetNumColumns",
+ /* 105 */ "AbsValue",
+ /* 106 */ "Transaction",
+ /* 107 */ "VFilter",
+ /* 108 */ "VDestroy",
+ /* 109 */ "ContextPop",
+ /* 110 */ "Next",
+ /* 111 */ "IdxInsert",
+ /* 112 */ "Distinct",
+ /* 113 */ "Insert",
+ /* 114 */ "Destroy",
+ /* 115 */ "ReadCookie",
+ /* 116 */ "ForceInt",
+ /* 117 */ "LoadAnalysis",
+ /* 118 */ "Explain",
+ /* 119 */ "IfMemZero",
+ /* 120 */ "OpenPseudo",
+ /* 121 */ "OpenEphemeral",
+ /* 122 */ "Null",
+ /* 123 */ "Blob",
+ /* 124 */ "MemStore",
+ /* 125 */ "Rewind",
+ /* 126 */ "Real",
+ /* 127 */ "HexBlob",
+ /* 128 */ "MoveGe",
+ /* 129 */ "VBegin",
+ /* 130 */ "VUpdate",
+ /* 131 */ "VCreate",
+ /* 132 */ "MemMove",
+ /* 133 */ "MemNull",
+ /* 134 */ "Found",
+ /* 135 */ "NullRow",
/* 136 */ "NotUsed_136",
- /* 137 */ "ToText",
- /* 138 */ "ToBlob",
- /* 139 */ "ToNumeric",
- /* 140 */ "ToInt",
- /* 141 */ "ToReal",
+ /* 137 */ "NotUsed_137",
+ /* 138 */ "NotUsed_138",
+ /* 139 */ "ToText",
+ /* 140 */ "ToBlob",
+ /* 141 */ "ToNumeric",
+ /* 142 */ "ToInt",
+ /* 143 */ "ToReal",
};
#endif
Modified: Frontier/vendor/sqlite3/current/opcodes.h
===================================================================
--- Frontier/vendor/sqlite3/current/opcodes.h 2006-10-03 02:33:50 UTC (rev 1531)
+++ Frontier/vendor/sqlite3/current/opcodes.h 2006-10-03 02:37:36 UTC (rev 1532)
@@ -1,159 +1,161 @@
/* Automatically generated. Do not edit */
/* See the mkopcodeh.awk script for details */
#define OP_MemLoad 1
-#define OP_HexBlob 125 /* same as TK_BLOB */
-#define OP_Column 2
-#define OP_SetCookie 3
-#define OP_IfMemPos 4
-#define OP_Real 124 /* same as TK_FLOAT */
-#define OP_Sequence 5
-#define OP_MoveGt 6
-#define OP_Ge 71 /* same as TK_GE */
-#define OP_RowKey 7
-#define OP_Eq 67 /* same as TK_EQ */
-#define OP_OpenWrite 8
-#define OP_NotNull 65 /* same as TK_NOTNULL */
-#define OP_If 9
-#define OP_ToInt 140 /* same as TK_TO_INT */
-#define OP_String8 86 /* same as TK_STRING */
-#define OP_Pop 10
-#define OP_CollSeq 11
-#define OP_OpenRead 12
-#define OP_Expire 13
-#define OP_AutoCommit 14
-#define OP_Gt 68 /* same as TK_GT */
-#define OP_IntegrityCk 15
-#define OP_Sort 17
-#define OP_Function 18
-#define OP_And 60 /* same as TK_AND */
-#define OP_Subtract 78 /* same as TK_MINUS */
-#define OP_Noop 19
-#define OP_Return 20
-#define OP_Remainder 81 /* same as TK_REM */
-#define OP_NewRowid 21
-#define OP_Multiply 79 /* same as TK_STAR */
-#define OP_IfMemNeg 22
-#define OP_Variable 23
-#define OP_String 24
-#define OP_RealAffinity 25
-#define OP_ParseSchema 26
-#define OP_Close 27
-#define OP_CreateIndex 28
-#define OP_IsUnique 29
-#define OP_IdxIsNull 30
-#define OP_NotFound 31
-#define OP_Int64 32
-#define OP_MustBeInt 33
-#define OP_Halt 34
-#define OP_Rowid 35
-#define OP_IdxLT 36
-#define OP_AddImm 37
-#define OP_Statement 38
-#define OP_RowData 39
-#define OP_MemMax 40
-#define OP_Push 41
-#define OP_Or 59 /* same as TK_OR */
-#define OP_NotExists 42
-#define OP_MemIncr 43
-#define OP_Gosub 44
-#define OP_Divide 80 /* same as TK_SLASH */
-#define OP_Integer 45
-#define OP_ToNumeric 139 /* same as TK_TO_NUMERIC*/
-#define OP_MemInt 46
-#define OP_Prev 47
-#define OP_Concat 82 /* same as TK_CONCAT */
-#define OP_BitAnd 73 /* same as TK_BITAND */
-#define OP_CreateTable 48
-#define OP_Last 49
-#define OP_IsNull 64 /* same as TK_ISNULL */
-#define OP_IdxRowid 50
-#define OP_MakeIdxRec 51
-#define OP_ShiftRight 76 /* same as TK_RSHIFT */
-#define OP_ResetCount 52
-#define OP_FifoWrite 53
-#define OP_Callback 54
-#define OP_ContextPush 55
-#define OP_DropTrigger 56
-#define OP_DropIndex 57
-#define OP_IdxGE 58
-#define OP_IdxDelete 61
-#define OP_Vacuum 62
-#define OP_MoveLe 63
-#define OP_IfNot 72
-#define OP_DropTable 84
-#define OP_MakeRecord 87
-#define OP_ToBlob 138 /* same as TK_TO_BLOB */
-#define OP_Delete 88
-#define OP_AggFinal 89
-#define OP_ShiftLeft 75 /* same as TK_LSHIFT */
-#define OP_Dup 90
-#define OP_Goto 91
-#define OP_TableLock 92
-#define OP_FifoRead 93
-#define OP_Clear 94
-#define OP_IdxGT 95
-#define OP_MoveLt 96
-#define OP_Le 69 /* same as TK_LE */
-#define OP_VerifyCookie 97
-#define OP_AggStep 98
-#define OP_Pull 99
-#define OP_ToText 137 /* same as TK_TO_TEXT */
+#define OP_VNext 2
+#define OP_HexBlob 127 /* same as TK_BLOB */
+#define OP_Column 3
+#define OP_SetCookie 4
+#define OP_IfMemPos 5
+#define OP_Real 126 /* same as TK_FLOAT */
+#define OP_Sequence 6
+#define OP_MoveGt 7
+#define OP_Ge 73 /* same as TK_GE */
+#define OP_RowKey 8
+#define OP_Eq 69 /* same as TK_EQ */
+#define OP_OpenWrite 9
+#define OP_NotNull 67 /* same as TK_NOTNULL */
+#define OP_If 10
+#define OP_ToInt 142 /* same as TK_TO_INT */
+#define OP_String8 88 /* same as TK_STRING */
+#define OP_Pop 11
+#define OP_VRowid 12
+#define OP_CollSeq 13
+#define OP_OpenRead 14
+#define OP_Expire 15
+#define OP_AutoCommit 17
+#define OP_Gt 70 /* same as TK_GT */
+#define OP_IntegrityCk 18
+#define OP_Sort 19
+#define OP_Function 20
+#define OP_And 62 /* same as TK_AND */
+#define OP_Subtract 80 /* same as TK_MINUS */
+#define OP_Noop 21
+#define OP_Return 22
+#define OP_Remainder 83 /* same as TK_REM */
+#define OP_NewRowid 23
+#define OP_Multiply 81 /* same as TK_STAR */
+#define OP_IfMemNeg 24
+#define OP_Variable 25
+#define OP_String 26
+#define OP_RealAffinity 27
+#define OP_ParseSchema 28
+#define OP_VOpen 29
+#define OP_Close 30
+#define OP_CreateIndex 31
+#define OP_IsUnique 32
+#define OP_IdxIsNull 33
+#define OP_NotFound 34
+#define OP_Int64 35
+#define OP_MustBeInt 36
+#define OP_Halt 37
+#define OP_Rowid 38
+#define OP_IdxLT 39
+#define OP_AddImm 40
+#define OP_Statement 41
+#define OP_RowData 42
+#define OP_MemMax 43
+#define OP_Push 44
+#define OP_Or 61 /* same as TK_OR */
+#define OP_NotExists 45
+#define OP_MemIncr 46
+#define OP_Gosub 47
+#define OP_Divide 82 /* same as TK_SLASH */
+#define OP_Integer 48
+#define OP_ToNumeric 141 /* same as TK_TO_NUMERIC*/
+#define OP_MemInt 49
+#define OP_Prev 50
+#define OP_Concat 84 /* same as TK_CONCAT */
+#define OP_BitAnd 75 /* same as TK_BITAND */
+#define OP_VColumn 51
+#define OP_CreateTable 52
+#define OP_Last 53
+#define OP_IsNull 66 /* same as TK_ISNULL */
+#define OP_IdxRowid 54
+#define OP_MakeIdxRec 55
+#define OP_ShiftRight 78 /* same as TK_RSHIFT */
+#define OP_ResetCount 56
+#define OP_FifoWrite 57
+#define OP_Callback 58
+#define OP_ContextPush 59
+#define OP_DropTrigger 60
+#define OP_DropIndex 63
+#define OP_IdxGE 64
+#define OP_IdxDelete 65
+#define OP_Vacuum 74
+#define OP_MoveLe 86
+#define OP_IfNot 89
+#define OP_DropTable 90
+#define OP_MakeRecord 91
+#define OP_ToBlob 140 /* same as TK_TO_BLOB */
+#define OP_Delete 92
+#define OP_AggFinal 93
+#define OP_ShiftLeft 77 /* same as TK_LSHIFT */
+#define OP_Dup 94
+#define OP_Goto 95
+#define OP_TableLock 96
+#define OP_FifoRead 97
+#define OP_Clear 98
+#define OP_IdxGT 99
+#define OP_MoveLt 100
+#define OP_Le 71 /* same as TK_LE */
+#define OP_VerifyCookie 101
+#define OP_AggStep 102
+#define OP_Pull 103
+#define OP_ToText 139 /* same as TK_TO_TEXT */
#define OP_Not 16 /* same as TK_NOT */
-#define OP_ToReal 141 /* same as TK_TO_REAL */
-#define OP_SetNumColumns 100
-#define OP_AbsValue 101
-#define OP_Transaction 102
-#define OP_Negative 83 /* same as TK_UMINUS */
-#define OP_Ne 66 /* same as TK_NE */
-#define OP_ContextPop 103
-#define OP_BitOr 74 /* same as TK_BITOR */
-#define OP_Next 104
-#define OP_IdxInsert 105
-#define OP_Distinct 106
-#define OP_Lt 70 /* same as TK_LT */
-#define OP_Insert 107
-#define OP_Destroy 108
-#define OP_ReadCookie 109
-#define OP_ForceInt 110
-#define OP_LoadAnalysis 111
-#define OP_OpenVirtual 112
-#define OP_Explain 113
-#define OP_IfMemZero 114
-#define OP_OpenPseudo 115
-#define OP_Null 116
-#define OP_Blob 117
-#define OP_Add 77 /* same as TK_PLUS */
-#define OP_MemStore 118
-#define OP_Rewind 119
-#define OP_MoveGe 120
-#define OP_BitNot 85 /* same as TK_BITNOT */
-#define OP_MemMove 121
-#define OP_MemNull 122
-#define OP_Found 123
-#define OP_NullRow 126
+#define OP_ToReal 143 /* same as TK_TO_REAL */
+#define OP_SetNumColumns 104
+#define OP_AbsValue 105
+#define OP_Transaction 106
+#define OP_VFilter 107
+#define OP_Negative 85 /* same as TK_UMINUS */
+#define OP_Ne 68 /* same as TK_NE */
+#define OP_VDestroy 108
+#define OP_ContextPop 109
+#define OP_BitOr 76 /* same as TK_BITOR */
+#define OP_Next 110
+#define OP_IdxInsert 111
+#define OP_Distinct 112
+#define OP_Lt 72 /* same as TK_LT */
+#define OP_Insert 113
+#define OP_Destroy 114
+#define OP_ReadCookie 115
+#define OP_ForceInt 116
+#define OP_LoadAnalysis 117
+#define OP_Explain 118
+#define OP_IfMemZero 119
+#define OP_OpenPseudo 120
+#define OP_OpenEphemeral 121
+#define OP_Null 122
+#define OP_Blob 123
+#define OP_Add 79 /* same as TK_PLUS */
+#define OP_MemStore 124
+#define OP_Rewind 125
+#define OP_MoveGe 128
+#define OP_VBegin 129
+#define OP_VUpdate 130
+#define OP_BitNot 87 /* same as TK_BITNOT */
+#define OP_VCreate 131
+#define OP_MemMove 132
+#define OP_MemNull 133
+#define OP_Found 134
+#define OP_NullRow 135
/* The following opcode values are never used */
-#define OP_NotUsed_127 127
-#define OP_NotUsed_128 128
-#define OP_NotUsed_129 129
-#define OP_NotUsed_130 130
-#define OP_NotUsed_131 131
-#define OP_NotUsed_132 132
-#define OP_NotUsed_133 133
-#define OP_NotUsed_134 134
-#define OP_NotUsed_135 135
#define OP_NotUsed_136 136
+#define OP_NotUsed_137 137
+#define OP_NotUsed_138 138
/* Opcodes that are guaranteed to never push a value onto the stack
** contain a 1 their corresponding position of the following mask
** set. See the opcodeNoPush() function in vdbeaux.c */
-#define NOPUSH_MASK_0 0x7f58
-#define NOPUSH_MASK_1 0xee5b
-#define NOPUSH_MASK_2 0x9f76
-#define NOPUSH_MASK_3 0xfff2
+#define NOPUSH_MASK_0 0xeeb4
+#define NOPUSH_MASK_1 0x796b
+#define NOPUSH_MASK_2 0xfbb7
+#define NOPUSH_MASK_3 0xff24
#define NOPUSH_MASK_4 0xffff
-#define NOPUSH_MASK_5 0xdb3b
-#define NOPUSH_MASK_6 0xcfdf
-#define NOPUSH_MASK_7 0x49cd
-#define NOPUSH_MASK_8 0x3e00
+#define NOPUSH_MASK_5 0xb6ef
+#define NOPUSH_MASK_6 0xfdfd
+#define NOPUSH_MASK_7 0x33b3
+#define NOPUSH_MASK_8 0xf8cf
#define NOPUSH_MASK_9 0x0000
Modified: Frontier/vendor/sqlite3/current/parse.c
===================================================================
--- Frontier/vendor/sqlite3/current/parse.c 2006-10-03 02:33:50 UTC (rev 1531)
+++ Frontier/vendor/sqlite3/current/parse.c 2006-10-03 02:37:36 UTC (rev 1532)
@@ -4,7 +4,7 @@
/* First off, code is include which follows the "include" declaration
** in the input file. */
#include <stdio.h>
-#line 51 "parse.y"
+#line 56 "parse.y"
#include "sqliteInt.h"
#include "parse.h"
@@ -93,35 +93,36 @@
** defined, then do no error processing.
*/
#define YYCODETYPE unsigned char
-#define YYNOCODE 240
+#define YYNOCODE 248
#define YYACTIONTYPE unsigned short int
+#define YYWILDCARD 60
#define sqlite3ParserTOKENTYPE Token
typedef union {
sqlite3ParserTOKENTYPE yy0;
- struct {int value; int mask;} yy13;
- struct TrigEvent yy132;
- IdList* yy160;
- Expr* yy178;
- int yy230;
- Select* yy239;
- TriggerStep* yy247;
- struct LimitVal yy270;
- SrcList* yy285;
- Expr * yy292;
- Token yy384;
- struct LikeOp yy440;
- ExprList* yy462;
- int yy479;
+ int yy46;
+ struct LikeOp yy72;
+ Expr* yy172;
+ ExprList* yy174;
+ Select* yy219;
+ struct LimitVal yy234;
+ TriggerStep* yy243;
+ struct TrigEvent yy370;
+ SrcList* yy373;
+ Expr * yy386;
+ struct {int value; int mask;} yy405;
+ Token yy410;
+ IdList* yy432;
+ int yy495;
} YYMINORTYPE;
#define YYSTACKDEPTH 100
#define sqlite3ParserARG_SDECL Parse *pParse;
#define sqlite3ParserARG_PDECL ,Parse *pParse
#define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
#define sqlite3ParserARG_STORE yypParser->pParse = pParse
-#define YYNSTATE 560
-#define YYNRULE 295
-#define YYERRORSYMBOL 137
-#define YYERRSYMDT yy479
+#define YYNSTATE 581
+#define YYNRULE 309
+#define YYERRORSYMBOL 139
+#define YYERRSYMDT yy495
#define YYFALLBACK 1
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
@@ -175,398 +176,411 @@
** yy_default[] Default action for each state.
*/
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 279, 68, 283, 70, 148, 166, 546, 419, 62, 62,
- /* 10 */ 62, 62, 202, 64, 64, 64, 64, 65, 65, 66,
- /* 20 */ 66, 66, 67, 67, 548, 549, 432, 69, 64, 64,
- /* 30 */ 64, 64, 65, 65, 66, 66, 66, 67, 68, 454,
- /* 40 */ 70, 148, 499, 61, 59, 287, 440, 441, 437, 437,
- /* 50 */ 63, 63, 62, 62, 62, 62, 501, 64, 64, 64,
- /* 60 */ 64, 65, 65, 66, 66, 66, 67, 279, 371, 283,
- /* 70 */ 419, 2, 377, 80, 158, 115, 220, 304, 225, 305,
- /* 80 */ 170, 245, 856, 119, 559, 504, 204, 2, 246, 389,
- /* 90 */ 496, 219, 22, 432, 514, 21, 419, 58, 493, 171,
- /* 100 */ 64, 64, 64, 64, 65, 65, 66, 66, 66, 67,
- /* 110 */ 61, 59, 287, 440, 441, 437, 437, 63, 63, 62,
- /* 120 */ 62, 62, 62, 512, 64, 64, 64, 64, 65, 65,
- /* 130 */ 66, 66, 66, 67, 279, 378, 379, 175, 202, 377,
- /* 140 */ 330, 333, 334, 220, 304, 225, 305, 170, 245, 203,
- /* 150 */ 146, 357, 335, 281, 377, 246, 55, 301, 373, 419,
- /* 160 */ 432, 505, 92, 200, 530, 66, 66, 66, 67, 525,
- /* 170 */ 192, 65, 65, 66, 66, 66, 67, 61, 59, 287,
- /* 180 */ 440, 441, 437, 437, 63, 63, 62, 62, 62, 62,
- /* 190 */ 433, 64, 64, 64, 64, 65, 65, 66, 66, 66,
- /* 200 */ 67, 279, 378, 379, 411, 431, 110, 226, 427, 205,
- /* 210 */ 435, 436, 308, 358, 261, 260, 175, 378, 379, 330,
- /* 220 */ 333, 334, 372, 369, 202, 511, 480, 432, 547, 362,
- /* 230 */ 466, 335, 510, 500, 410, 41, 276, 414, 434, 429,
- /* 240 */ 503, 162, 233, 527, 61, 59, 287, 440, 441, 437,
- /* 250 */ 437, 63, 63, 62, 62, 62, 62, 319, 64, 64,
- /* 260 */ 64, 64, 65, 65, 66, 66, 66, 67, 279, 472,
- /* 270 */ 416, 416, 416, 308, 322, 236, 308, 68, 308, 70,
- /* 280 */ 148, 1, 308, 793, 308, 377, 68, 153, 70, 148,
- /* 290 */ 149, 377, 325, 282, 432, 410, 35, 551, 410, 35,
- /* 300 */ 410, 36, 427, 205, 410, 35, 410, 35, 286, 422,
- /* 310 */ 423, 61, 59, 287, 440, 441, 437, 437, 63, 63,
- /* 320 */ 62, 62, 62, 62, 411, 64, 64, 64, 64, 65,
- /* 330 */ 65, 66, 66, 66, 67, 308, 504, 466, 290, 255,
- /* 340 */ 279, 324, 485, 147, 237, 388, 21, 288, 378, 379,
- /* 350 */ 451, 419, 232, 451, 378, 379, 308, 410, 28, 451,
- /* 360 */ 175, 450, 486, 330, 333, 334, 432, 215, 347, 145,
- /* 370 */ 513, 204, 350, 186, 168, 335, 238, 411, 410, 41,
- /* 380 */ 256, 462, 76, 61, 59, 287, 440, 441, 437, 437,
- /* 390 */ 63, 63, 62, 62, 62, 62, 309, 64, 64, 64,
- /* 400 */ 64, 65, 65, 66, 66, 66, 67, 411, 411, 186,
- /* 410 */ 396, 308, 279, 291, 419, 338, 476, 308, 390, 234,
- /* 420 */ 169, 154, 397, 475, 396, 327, 493, 311, 422, 423,
- /* 430 */ 444, 377, 356, 410, 49, 398, 397, 394, 432, 410,
- /* 440 */ 49, 502, 171, 411, 429, 312, 162, 395, 351, 398,
- /* 450 */ 497, 318, 470, 352, 79, 61, 59, 287, 440, 441,
- /* 460 */ 437, 437, 63, 63, 62, 62, 62, 62, 356, 64,
- /* 470 */ 64, 64, 64, 65, 65, 66, 66, 66, 67, 279,
- /* 480 */ 298, 445, 376, 479, 532, 405, 299, 11, 504, 352,
- /* 490 */ 204, 377, 406, 377, 378, 379, 281, 556, 21, 491,
- /* 500 */ 491, 246, 560, 372, 369, 432, 392, 393, 314, 123,
- /* 510 */ 443, 443, 166, 289, 419, 314, 116, 443, 443, 251,
- /* 520 */ 264, 463, 61, 59, 287, 440, 441, 437, 437, 63,
- /* 530 */ 63, 62, 62, 62, 62, 292, 64, 64, 64, 64,
- /* 540 */ 65, 65, 66, 66, 66, 67, 279, 459, 328, 474,
- /* 550 */ 498, 308, 202, 308, 378, 379, 378, 379, 181, 131,
- /* 560 */ 179, 265, 308, 5, 308, 363, 314, 355, 443, 443,
- /* 570 */ 410, 3, 432, 410, 29, 410, 24, 419, 243, 244,
- /* 580 */ 380, 381, 382, 404, 410, 33, 410, 54, 466, 61,
- /* 590 */ 59, 287, 440, 441, 437, 437, 63, 63, 62, 62,
- /* 600 */ 62, 62, 308, 64, 64, 64, 64, 65, 65, 66,
- /* 610 */ 66, 66, 67, 279, 521, 344, 521, 249, 308, 491,
- /* 620 */ 308, 470, 308, 470, 410, 25, 308, 240, 308, 314,
- /* 630 */ 308, 443, 443, 213, 172, 173, 174, 142, 266, 432,
- /* 640 */ 410, 52, 410, 97, 410, 94, 528, 393, 410, 99,
- /* 650 */ 410, 100, 410, 111, 212, 255, 61, 59, 287, 440,
- /* 660 */ 441, 437, 437, 63, 63, 62, 62, 62, 62, 308,
- /* 670 */ 64, 64, 64, 64, 65, 65, 66, 66, 66, 67,
- /* 680 */ 279, 308, 345, 188, 297, 91, 308, 491, 308, 415,
- /* 690 */ 308, 410, 112, 308, 428, 308, 537, 308, 244, 165,
- /* 700 */ 154, 409, 355, 410, 18, 408, 432, 320, 410, 98,
- /* 710 */ 410, 34, 410, 95, 313, 410, 53, 410, 113, 410,
- /* 720 */ 114, 255, 293, 61, 59, 287, 440, 441, 437, 437,
- /* 730 */ 63, 63, 62, 62, 62, 62, 308, 64, 64, 64,
- /* 740 */ 64, 65, 65, 66, 66, 66, 67, 279, 308, 491,
- /* 750 */ 491, 523, 308, 452, 308, 522, 308, 461, 410, 26,
- /* 760 */ 308, 75, 539, 77, 308, 460, 244, 346, 214, 465,
- /* 770 */ 410, 37, 469, 432, 410, 38, 410, 27, 410, 39,
- /* 780 */ 242, 82, 410, 40, 294, 296, 410, 42, 438, 329,
- /* 790 */ 61, 59, 287, 440, 441, 437, 437, 63, 63, 62,
- /* 800 */ 62, 62, 62, 308, 64, 64, 64, 64, 65, 65,
- /* 810 */ 66, 66, 66, 67, 279, 308, 409, 190, 221, 308,
- /* 820 */ 408, 308, 152, 308, 159, 410, 43, 308, 244, 244,
- /* 830 */ 222, 20, 308, 139, 425, 425, 481, 410, 44, 482,
- /* 840 */ 432, 410, 30, 410, 31, 410, 45, 487, 461, 410,
- /* 850 */ 46, 411, 506, 255, 410, 47, 488, 61, 71, 287,
- /* 860 */ 440, 441, 437, 437, 63, 63, 62, 62, 62, 62,
- /* 870 */ 308, 64, 64, 64, 64, 65, 65, 66, 66, 66,
- /* 880 */ 67, 279, 308, 401, 402, 250, 308, 193, 308, 420,
- /* 890 */ 308, 23, 410, 48, 540, 449, 255, 14, 468, 477,
- /* 900 */ 167, 14, 484, 483, 410, 32, 252, 432, 410, 12,
- /* 910 */ 410, 50, 410, 51, 255, 255, 594, 255, 255, 150,
- /* 920 */ 489, 411, 123, 253, 279, 59, 287, 440, 441, 437,
- /* 930 */ 437, 63, 63, 62, 62, 62, 62, 541, 64, 64,
- /* 940 */ 64, 64, 65, 65, 66, 66, 66, 67, 254, 248,
- /* 950 */ 432, 123, 337, 411, 123, 267, 269, 196, 361, 366,
- /* 960 */ 183, 177, 180, 519, 520, 526, 534, 123, 167, 287,
- /* 970 */ 440, 441, 437, 437, 63, 63, 62, 62, 62, 62,
- /* 980 */ 342, 64, 64, 64, 64, 65, 65, 66, 66, 66,
- /* 990 */ 67, 72, 315, 259, 4, 411, 411, 535, 285, 89,
- /* 1000 */ 544, 349, 89, 353, 354, 19, 310, 72, 315, 368,
- /* 1010 */ 4, 386, 262, 263, 285, 223, 545, 270, 364, 273,
- /* 1020 */ 274, 141, 310, 317, 227, 316, 555, 424, 426, 480,
- /* 1030 */ 455, 458, 490, 431, 332, 492, 533, 157, 543, 317,
- /* 1040 */ 375, 383, 384, 385, 8, 302, 303, 391, 284, 431,
- /* 1050 */ 404, 399, 74, 73, 224, 403, 407, 82, 323, 321,
- /* 1060 */ 72, 306, 307, 400, 231, 414, 81, 206, 74, 73,
- /* 1070 */ 473, 57, 78, 164, 453, 412, 72, 306, 307, 72,
- /* 1080 */ 315, 414, 4, 228, 202, 229, 285, 235, 230, 456,
- /* 1090 */ 457, 413, 207, 120, 310, 83, 326, 102, 416, 416,
- /* 1100 */ 416, 417, 418, 13, 239, 495, 467, 241, 277, 208,
- /* 1110 */ 471, 317, 494, 210, 416, 416, 416, 417, 418, 13,
- /* 1120 */ 211, 431, 156, 278, 339, 507, 508, 216, 217, 218,
- /* 1130 */ 106, 509, 515, 178, 343, 84, 341, 182, 517, 456,
- /* 1140 */ 74, 73, 86, 198, 518, 271, 257, 184, 72, 306,
- /* 1150 */ 307, 348, 272, 414, 118, 529, 187, 127, 536, 359,
- /* 1160 */ 128, 136, 129, 542, 195, 130, 530, 133, 300, 552,
- /* 1170 */ 553, 194, 137, 197, 431, 90, 554, 557, 96, 209,
- /* 1180 */ 101, 374, 387, 117, 201, 56, 416, 416, 416, 417,
- /* 1190 */ 418, 13, 93, 143, 144, 595, 596, 109, 160, 161,
- /* 1200 */ 60, 439, 500, 421, 430, 442, 414, 138, 446, 151,
- /* 1210 */ 6, 447, 155, 448, 163, 360, 268, 260, 15, 7,
- /* 1220 */ 14, 280, 121, 464, 122, 478, 202, 103, 104, 331,
- /* 1230 */ 247, 85, 105, 336, 222, 176, 340, 140, 516, 416,
- /* 1240 */ 416, 416, 124, 295, 125, 167, 524, 258, 107, 185,
- /* 1250 */ 365, 9, 531, 10, 126, 189, 16, 538, 191, 132,
- /* 1260 */ 134, 87, 88, 135, 17, 108, 275, 550, 367, 199,
- /* 1270 */ 370, 536, 558,
+ /* 0 */ 287, 67, 291, 69, 150, 168, 206, 431, 61, 61,
+ /* 10 */ 61, 61, 66, 63, 63, 63, 63, 64, 64, 65,
+ /* 20 */ 65, 65, 66, 441, 322, 164, 444, 450, 68, 63,
+ /* 30 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 64,
+ /* 40 */ 64, 65, 65, 65, 66, 60, 58, 295, 454, 455,
+ /* 50 */ 451, 451, 62, 62, 61, 61, 61, 61, 513, 63,
+ /* 60 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 287,
+ /* 70 */ 318, 67, 431, 69, 150, 79, 160, 114, 224, 314,
+ /* 80 */ 229, 315, 172, 249, 891, 120, 580, 515, 518, 2,
+ /* 90 */ 250, 566, 422, 35, 223, 444, 450, 528, 20, 57,
+ /* 100 */ 384, 381, 63, 63, 63, 63, 64, 64, 65, 65,
+ /* 110 */ 65, 66, 287, 473, 60, 58, 295, 454, 455, 451,
+ /* 120 */ 451, 62, 62, 61, 61, 61, 61, 389, 63, 63,
+ /* 130 */ 63, 63, 64, 64, 65, 65, 65, 66, 444, 450,
+ /* 140 */ 91, 311, 385, 480, 236, 383, 269, 204, 2, 83,
+ /* 150 */ 581, 384, 381, 470, 196, 439, 209, 60, 58, 295,
+ /* 160 */ 454, 455, 451, 451, 62, 62, 61, 61, 61, 61,
+ /* 170 */ 170, 63, 63, 63, 63, 64, 64, 65, 65, 65,
+ /* 180 */ 66, 287, 486, 439, 209, 132, 109, 270, 423, 443,
+ /* 190 */ 402, 281, 390, 391, 441, 517, 164, 318, 507, 67,
+ /* 200 */ 526, 69, 150, 562, 423, 143, 516, 444, 450, 145,
+ /* 210 */ 146, 578, 882, 373, 882, 511, 171, 156, 514, 422,
+ /* 220 */ 40, 337, 426, 19, 287, 140, 60, 58, 295, 454,
+ /* 230 */ 455, 451, 451, 62, 62, 61, 61, 61, 61, 380,
+ /* 240 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
+ /* 250 */ 444, 450, 575, 404, 405, 428, 428, 428, 329, 332,
+ /* 260 */ 240, 545, 67, 468, 69, 150, 271, 287, 291, 60,
+ /* 270 */ 58, 295, 454, 455, 451, 451, 62, 62, 61, 61,
+ /* 280 */ 61, 61, 124, 63, 63, 63, 63, 64, 64, 65,
+ /* 290 */ 65, 65, 66, 444, 450, 401, 510, 389, 290, 544,
+ /* 300 */ 65, 65, 65, 66, 507, 389, 542, 405, 443, 294,
+ /* 310 */ 434, 435, 60, 58, 295, 454, 455, 451, 451, 62,
+ /* 320 */ 62, 61, 61, 61, 61, 206, 63, 63, 63, 63,
+ /* 330 */ 64, 64, 65, 65, 65, 66, 519, 514, 366, 287,
+ /* 340 */ 75, 426, 148, 490, 224, 314, 229, 315, 172, 249,
+ /* 350 */ 367, 265, 264, 1, 574, 286, 250, 389, 416, 445,
+ /* 360 */ 446, 206, 390, 391, 177, 444, 450, 340, 343, 344,
+ /* 370 */ 390, 391, 208, 357, 428, 428, 428, 360, 168, 345,
+ /* 380 */ 431, 448, 449, 78, 60, 58, 295, 454, 455, 451,
+ /* 390 */ 451, 62, 62, 61, 61, 61, 61, 476, 63, 63,
+ /* 400 */ 63, 63, 64, 64, 65, 65, 65, 66, 287, 447,
+ /* 410 */ 177, 561, 493, 340, 343, 344, 21, 318, 518, 318,
+ /* 420 */ 431, 318, 390, 391, 318, 345, 475, 400, 20, 563,
+ /* 430 */ 564, 489, 151, 177, 444, 450, 340, 343, 344, 422,
+ /* 440 */ 34, 422, 34, 422, 34, 431, 422, 34, 345, 192,
+ /* 450 */ 237, 147, 527, 60, 58, 295, 454, 455, 451, 451,
+ /* 460 */ 62, 62, 61, 61, 61, 61, 423, 63, 63, 63,
+ /* 470 */ 63, 64, 64, 65, 65, 65, 66, 287, 230, 348,
+ /* 480 */ 408, 512, 298, 423, 334, 431, 318, 206, 318, 296,
+ /* 490 */ 318, 208, 409, 154, 465, 9, 465, 458, 464, 389,
+ /* 500 */ 374, 465, 173, 444, 450, 410, 173, 406, 422, 40,
+ /* 510 */ 422, 48, 422, 48, 321, 434, 435, 407, 324, 475,
+ /* 520 */ 457, 457, 60, 58, 295, 454, 455, 451, 451, 62,
+ /* 530 */ 62, 61, 61, 61, 61, 459, 63, 63, 63, 63,
+ /* 540 */ 64, 64, 65, 65, 65, 66, 287, 318, 499, 238,
+ /* 550 */ 253, 480, 389, 338, 408, 149, 421, 306, 289, 307,
+ /* 560 */ 420, 389, 289, 389, 390, 391, 409, 250, 500, 422,
+ /* 570 */ 27, 155, 444, 450, 431, 422, 3, 208, 539, 410,
+ /* 580 */ 335, 328, 578, 881, 324, 881, 457, 457, 484, 423,
+ /* 590 */ 242, 60, 58, 295, 454, 455, 451, 451, 62, 62,
+ /* 600 */ 61, 61, 61, 61, 255, 63, 63, 63, 63, 64,
+ /* 610 */ 64, 65, 65, 65, 66, 287, 368, 390, 391, 488,
+ /* 620 */ 90, 299, 324, 575, 457, 457, 390, 391, 390, 391,
+ /* 630 */ 318, 525, 494, 318, 392, 393, 394, 518, 524, 431,
+ /* 640 */ 241, 444, 450, 183, 477, 181, 571, 20, 324, 297,
+ /* 650 */ 457, 457, 422, 28, 541, 422, 23, 505, 287, 339,
+ /* 660 */ 60, 58, 295, 454, 455, 451, 451, 62, 62, 61,
+ /* 670 */ 61, 61, 61, 318, 63, 63, 63, 63, 64, 64,
+ /* 680 */ 65, 65, 65, 66, 444, 450, 421, 535, 354, 535,
+ /* 690 */ 420, 259, 300, 505, 816, 422, 32, 74, 505, 76,
+ /* 700 */ 188, 287, 505, 60, 58, 295, 454, 455, 451, 451,
+ /* 710 */ 62, 62, 61, 61, 61, 61, 318, 63, 63, 63,
+ /* 720 */ 63, 64, 64, 65, 65, 65, 66, 444, 450, 174,
+ /* 730 */ 175, 176, 377, 216, 423, 480, 248, 301, 422, 53,
+ /* 740 */ 505, 505, 259, 259, 287, 259, 60, 70, 295, 454,
+ /* 750 */ 455, 451, 451, 62, 62, 61, 61, 61, 61, 365,
+ /* 760 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
+ /* 770 */ 444, 450, 247, 319, 244, 302, 304, 248, 167, 156,
+ /* 780 */ 361, 248, 379, 260, 552, 259, 554, 287, 259, 219,
+ /* 790 */ 58, 295, 454, 455, 451, 451, 62, 62, 61, 61,
+ /* 800 */ 61, 61, 318, 63, 63, 63, 63, 64, 64, 65,
+ /* 810 */ 65, 65, 66, 444, 450, 484, 432, 484, 22, 248,
+ /* 820 */ 248, 207, 388, 364, 422, 24, 555, 364, 54, 556,
+ /* 830 */ 309, 119, 437, 437, 295, 454, 455, 451, 451, 62,
+ /* 840 */ 62, 61, 61, 61, 61, 318, 63, 63, 63, 63,
+ /* 850 */ 64, 64, 65, 65, 65, 66, 71, 325, 318, 4,
+ /* 860 */ 318, 537, 318, 293, 259, 536, 259, 422, 51, 318,
+ /* 870 */ 161, 320, 71, 325, 318, 4, 355, 356, 305, 293,
+ /* 880 */ 422, 96, 422, 93, 422, 98, 225, 320, 327, 217,
+ /* 890 */ 115, 422, 99, 218, 190, 318, 422, 110, 226, 443,
+ /* 900 */ 318, 259, 318, 417, 327, 272, 427, 372, 318, 5,
+ /* 910 */ 418, 318, 413, 414, 330, 443, 318, 422, 111, 73,
+ /* 920 */ 72, 197, 422, 16, 422, 97, 152, 71, 316, 317,
+ /* 930 */ 422, 33, 426, 422, 94, 73, 72, 487, 422, 52,
+ /* 940 */ 318, 200, 274, 71, 316, 317, 71, 325, 426, 4,
+ /* 950 */ 318, 206, 318, 293, 318, 423, 463, 318, 12, 179,
+ /* 960 */ 423, 320, 422, 112, 615, 428, 428, 428, 429, 430,
+ /* 970 */ 11, 323, 422, 113, 422, 25, 422, 36, 327, 422,
+ /* 980 */ 37, 428, 428, 428, 429, 430, 11, 498, 497, 443,
+ /* 990 */ 158, 18, 318, 423, 81, 220, 221, 222, 101, 182,
+ /* 1000 */ 482, 318, 169, 318, 491, 318, 12, 318, 440, 73,
+ /* 1010 */ 72, 202, 466, 276, 422, 26, 474, 71, 316, 317,
+ /* 1020 */ 277, 318, 426, 422, 38, 422, 39, 422, 41, 422,
+ /* 1030 */ 42, 318, 199, 423, 544, 503, 252, 124, 124, 198,
+ /* 1040 */ 318, 479, 201, 422, 43, 318, 483, 452, 318, 246,
+ /* 1050 */ 347, 318, 124, 422, 29, 428, 428, 428, 429, 430,
+ /* 1060 */ 11, 495, 422, 30, 496, 576, 318, 422, 44, 501,
+ /* 1070 */ 422, 45, 318, 422, 46, 520, 318, 533, 534, 318,
+ /* 1080 */ 540, 318, 124, 502, 185, 371, 273, 264, 422, 47,
+ /* 1090 */ 254, 288, 256, 257, 422, 31, 206, 258, 422, 10,
+ /* 1100 */ 352, 422, 49, 422, 50, 577, 548, 549, 169, 88,
+ /* 1110 */ 559, 263, 88, 359, 362, 573, 363, 285, 266, 267,
+ /* 1120 */ 376, 268, 551, 560, 275, 375, 278, 279, 231, 570,
+ /* 1130 */ 227, 142, 398, 326, 469, 436, 438, 472, 494, 159,
+ /* 1140 */ 504, 547, 506, 558, 387, 395, 342, 396, 397, 8,
+ /* 1150 */ 312, 313, 292, 416, 81, 403, 333, 232, 411, 80,
+ /* 1160 */ 228, 331, 419, 415, 56, 77, 210, 412, 239, 166,
+ /* 1170 */ 467, 211, 470, 471, 121, 82, 102, 336, 349, 282,
+ /* 1180 */ 508, 424, 521, 522, 529, 523, 351, 180, 233, 509,
+ /* 1190 */ 234, 184, 235, 283, 531, 425, 353, 85, 186, 117,
+ /* 1200 */ 358, 128, 369, 370, 308, 567, 568, 243, 543, 481,
+ /* 1210 */ 245, 212, 485, 189, 386, 569, 572, 129, 95, 214,
+ /* 1220 */ 215, 399, 550, 116, 130, 205, 55, 616, 131, 617,
+ /* 1230 */ 162, 163, 433, 134, 59, 213, 442, 557, 137, 100,
+ /* 1240 */ 138, 139, 453, 456, 460, 153, 165, 461, 261, 462,
+ /* 1250 */ 6, 122, 13, 12, 7, 532, 478, 123, 157, 492,
+ /* 1260 */ 103, 341, 89, 251, 104, 84, 105, 346, 226, 178,
+ /* 1270 */ 350, 141, 530, 125, 303, 169, 262, 187, 106, 126,
+ /* 1280 */ 538, 284, 546, 127, 191, 14, 194, 92, 17, 86,
+ /* 1290 */ 87, 193, 195, 133, 108, 553, 135, 565, 136, 15,
+ /* 1300 */ 107, 203, 378, 280, 144, 382, 558, 118, 579, 558,
+ /* 1310 */ 558, 310,
};
static const YYCODETYPE yy_lookahead[] = {
- /* 0 */ 16, 216, 16, 218, 219, 21, 146, 23, 68, 69,
- /* 10 */ 70, 71, 109, 73, 74, 75, 76, 77, 78, 79,
- /* 20 */ 80, 81, 82, 82, 164, 165, 42, 72, 73, 74,
- /* 30 */ 75, 76, 77, 78, 79, 80, 81, 82, 216, 217,
- /* 40 */ 218, 219, 168, 59, 60, 61, 62, 63, 64, 65,
- /* 50 */ 66, 67, 68, 69, 70, 71, 168, 73, 74, 75,
- /* 60 */ 76, 77, 78, 79, 80, 81, 82, 16, 140, 16,
- /* 70 */ 86, 143, 23, 22, 88, 89, 90, 91, 92, 93,
- /* 80 */ 94, 95, 138, 139, 140, 146, 226, 143, 102, 166,
- /* 90 */ 167, 152, 19, 42, 155, 156, 23, 46, 175, 43,
- /* 100 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- /* 110 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- /* 120 */ 69, 70, 71, 180, 73, 74, 75, 76, 77, 78,
- /* 130 */ 79, 80, 81, 82, 16, 86, 87, 88, 109, 23,
- /* 140 */ 91, 92, 93, 90, 91, 92, 93, 94, 95, 191,
- /* 150 */ 22, 122, 103, 97, 23, 102, 198, 141, 142, 86,
- /* 160 */ 42, 180, 44, 147, 49, 79, 80, 81, 82, 18,
- /* 170 */ 154, 77, 78, 79, 80, 81, 82, 59, 60, 61,
- /* 180 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 190 */ 42, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- /* 200 */ 82, 16, 86, 87, 188, 58, 21, 189, 77, 78,
- /* 210 */ 62, 63, 146, 98, 99, 100, 88, 86, 87, 91,
- /* 220 */ 92, 93, 1, 2, 109, 175, 176, 42, 97, 213,
- /* 230 */ 160, 103, 182, 86, 168, 169, 157, 90, 90, 160,
- /* 240 */ 161, 162, 146, 92, 59, 60, 61, 62, 63, 64,
- /* 250 */ 65, 66, 67, 68, 69, 70, 71, 185, 73, 74,
- /* 260 */ 75, 76, 77, 78, 79, 80, 81, 82, 16, 199,
- /* 270 */ 123, 124, 125, 146, 208, 209, 146, 216, 146, 218,
- /* 280 */ 219, 19, 146, 132, 146, 23, 216, 146, 218, 219,
- /* 290 */ 154, 23, 146, 149, 42, 168, 169, 236, 168, 169,
- /* 300 */ 168, 169, 77, 78, 168, 169, 168, 169, 163, 164,
- /* 310 */ 165, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- /* 320 */ 68, 69, 70, 71, 188, 73, 74, 75, 76, 77,
- /* 330 */ 78, 79, 80, 81, 82, 146, 146, 160, 211, 146,
- /* 340 */ 16, 211, 30, 154, 146, 155, 156, 211, 86, 87,
- /* 350 */ 223, 23, 220, 223, 86, 87, 146, 168, 169, 223,
- /* 360 */ 88, 223, 50, 91, 92, 93, 42, 144, 224, 179,
- /* 370 */ 180, 226, 228, 154, 154, 103, 199, 188, 168, 169,
- /* 380 */ 187, 113, 130, 59, 60, 61, 62, 63, 64, 65,
- /* 390 */ 66, 67, 68, 69, 70, 71, 146, 73, 74, 75,
- /* 400 */ 76, 77, 78, 79, 80, 81, 82, 188, 188, 154,
- /* 410 */ 12, 146, 16, 101, 86, 16, 20, 146, 167, 209,
- /* 420 */ 200, 201, 24, 20, 12, 205, 175, 163, 164, 165,
- /* 430 */ 20, 23, 213, 168, 169, 37, 24, 39, 42, 168,
- /* 440 */ 169, 159, 43, 188, 160, 161, 162, 49, 229, 37,
- /* 450 */ 168, 39, 146, 234, 130, 59, 60, 61, 62, 63,
- /* 460 */ 64, 65, 66, 67, 68, 69, 70, 71, 213, 73,
- /* 470 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 16,
- /* 480 */ 215, 20, 146, 20, 229, 27, 215, 19, 146, 234,
- /* 490 */ 226, 23, 34, 23, 86, 87, 97, 155, 156, 146,
- /* 500 */ 146, 102, 0, 1, 2, 42, 184, 185, 105, 22,
- /* 510 */ 107, 108, 21, 207, 23, 105, 146, 107, 108, 14,
- /* 520 */ 14, 113, 59, 60, 61, 62, 63, 64, 65, 66,
- /* 530 */ 67, 68, 69, 70, 71, 181, 73, 74, 75, 76,
- /* 540 */ 77, 78, 79, 80, 81, 82, 16, 22, 146, 79,
- /* 550 */ 20, 146, 109, 146, 86, 87, 86, 87, 53, 53,
- /* 560 */ 55, 55, 146, 190, 146, 122, 105, 146, 107, 108,
- /* 570 */ 168, 169, 42, 168, 169, 168, 169, 86, 225, 225,
- /* 580 */ 7, 8, 9, 96, 168, 169, 168, 169, 160, 59,
- /* 590 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- /* 600 */ 70, 71, 146, 73, 74, 75, 76, 77, 78, 79,
- /* 610 */ 80, 81, 82, 16, 98, 99, 100, 20, 146, 146,
- /* 620 */ 146, 146, 146, 146, 168, 169, 146, 199, 146, 105,
- /* 630 */ 146, 107, 108, 212, 98, 99, 100, 112, 132, 42,
- /* 640 */ 168, 169, 168, 169, 168, 169, 184, 185, 168, 169,
- /* 650 */ 168, 169, 168, 169, 181, 146, 59, 60, 61, 62,
- /* 660 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 146,
- /* 670 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- /* 680 */ 16, 146, 207, 22, 207, 21, 146, 146, 146, 146,
- /* 690 */ 146, 168, 169, 146, 160, 146, 187, 146, 225, 200,
- /* 700 */ 201, 106, 146, 168, 169, 110, 42, 146, 168, 169,
- /* 710 */ 168, 169, 168, 169, 16, 168, 169, 168, 169, 168,
- /* 720 */ 169, 146, 181, 59, 60, 61, 62, 63, 64, 65,
- /* 730 */ 66, 67, 68, 69, 70, 71, 146, 73, 74, 75,
- /* 740 */ 76, 77, 78, 79, 80, 81, 82, 16, 146, 146,
- /* 750 */ 146, 25, 146, 146, 146, 29, 146, 22, 168, 169,
- /* 760 */ 146, 129, 187, 131, 146, 202, 225, 41, 212, 146,
- /* 770 */ 168, 169, 146, 42, 168, 169, 168, 169, 168, 169,
- /* 780 */ 146, 120, 168, 169, 181, 181, 168, 169, 90, 79,
- /* 790 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- /* 800 */ 69, 70, 71, 146, 73, 74, 75, 76, 77, 78,
- /* 810 */ 79, 80, 81, 82, 16, 146, 106, 154, 90, 146,
- /* 820 */ 110, 146, 87, 146, 19, 168, 169, 146, 225, 225,
- /* 830 */ 102, 19, 146, 21, 123, 124, 146, 168, 169, 177,
- /* 840 */ 42, 168, 169, 168, 169, 168, 169, 177, 113, 168,
- /* 850 */ 169, 188, 146, 146, 168, 169, 177, 59, 60, 61,
- /* 860 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 870 */ 146, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- /* 880 */ 82, 16, 146, 7, 8, 146, 146, 154, 146, 20,
- /* 890 */ 146, 22, 168, 169, 187, 20, 146, 22, 20, 20,
- /* 900 */ 22, 22, 89, 90, 168, 169, 146, 42, 168, 169,
- /* 910 */ 168, 169, 168, 169, 146, 146, 111, 146, 146, 154,
- /* 920 */ 20, 188, 22, 146, 16, 60, 61, 62, 63, 64,
- /* 930 */ 65, 66, 67, 68, 69, 70, 71, 187, 73, 74,
- /* 940 */ 75, 76, 77, 78, 79, 80, 81, 82, 146, 20,
- /* 950 */ 42, 22, 20, 188, 22, 187, 187, 19, 187, 187,
- /* 960 */ 230, 154, 154, 51, 52, 20, 20, 22, 22, 61,
- /* 970 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 980 */ 231, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- /* 990 */ 82, 16, 17, 146, 19, 188, 188, 20, 23, 22,
- /* 1000 */ 20, 146, 22, 146, 146, 67, 31, 16, 17, 237,
- /* 1010 */ 19, 148, 146, 146, 23, 171, 146, 146, 146, 146,
- /* 1020 */ 146, 190, 31, 48, 192, 222, 146, 227, 227, 176,
- /* 1030 */ 171, 171, 171, 58, 172, 171, 193, 6, 193, 48,
- /* 1040 */ 145, 145, 145, 145, 22, 153, 97, 170, 40, 58,
- /* 1050 */ 96, 170, 77, 78, 170, 172, 170, 120, 117, 115,
- /* 1060 */ 85, 86, 87, 178, 196, 90, 118, 221, 77, 78,
- /* 1070 */ 79, 119, 129, 111, 151, 188, 85, 86, 87, 16,
- /* 1080 */ 17, 90, 19, 193, 109, 194, 23, 95, 195, 23,
- /* 1090 */ 159, 197, 210, 151, 31, 97, 114, 19, 123, 124,
- /* 1100 */ 125, 126, 127, 128, 203, 178, 204, 203, 173, 210,
- /* 1110 */ 204, 48, 159, 210, 123, 124, 125, 126, 127, 128,
- /* 1120 */ 210, 58, 5, 173, 15, 170, 170, 10, 11, 12,
- /* 1130 */ 13, 170, 151, 150, 38, 19, 151, 151, 151, 23,
- /* 1140 */ 77, 78, 129, 26, 233, 28, 232, 150, 85, 86,
- /* 1150 */ 87, 151, 35, 90, 59, 183, 183, 19, 193, 15,
- /* 1160 */ 186, 214, 186, 193, 47, 186, 49, 183, 151, 33,
- /* 1170 */ 151, 54, 214, 56, 58, 235, 151, 136, 158, 174,
- /* 1180 */ 174, 1, 20, 32, 44, 19, 123, 124, 125, 126,
- /* 1190 */ 127, 128, 235, 77, 78, 111, 111, 238, 111, 111,
- /* 1200 */ 19, 90, 86, 20, 20, 106, 90, 19, 11, 19,
- /* 1210 */ 116, 20, 111, 20, 22, 98, 99, 100, 22, 116,
- /* 1220 */ 22, 104, 19, 113, 20, 20, 109, 19, 19, 44,
- /* 1230 */ 20, 19, 19, 44, 102, 94, 16, 21, 17, 123,
- /* 1240 */ 124, 125, 97, 36, 45, 22, 45, 132, 19, 97,
- /* 1250 */ 133, 5, 11, 1, 101, 121, 19, 17, 112, 112,
- /* 1260 */ 101, 67, 67, 121, 19, 14, 135, 20, 57, 134,
- /* 1270 */ 3, 239, 4,
+ /* 0 */ 16, 218, 16, 220, 221, 21, 111, 23, 70, 71,
+ /* ...
[truncated message content] |
|
From: <cre...@us...> - 2006-10-03 02:33:53
|
Revision: 1531
http://svn.sourceforge.net/frontierkernel/?rev=1531&view=rev
Author: creecode
Date: 2006-10-02 19:33:50 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
delete mistakenly added files
Removed Paths:
-------------
Frontier/vendor/sqlite3/current/os_os2.h
Frontier/vendor/sqlite3/current/parse.y
Frontier/vendor/sqlite3/current/sqlite.h.in
Frontier/vendor/sqlite3/current/test1.c
Frontier/vendor/sqlite3/current/test2.c
Frontier/vendor/sqlite3/current/test3.c
Frontier/vendor/sqlite3/current/test4.c
Frontier/vendor/sqlite3/current/test5.c
Frontier/vendor/sqlite3/current/test6.c
Frontier/vendor/sqlite3/current/test7.c
Frontier/vendor/sqlite3/current/test8.c
Frontier/vendor/sqlite3/current/test_async.c
Frontier/vendor/sqlite3/current/test_loadext.c
Frontier/vendor/sqlite3/current/test_md5.c
Frontier/vendor/sqlite3/current/test_schema.c
Frontier/vendor/sqlite3/current/test_server.c
Frontier/vendor/sqlite3/current/test_tclvar.c
Deleted: Frontier/vendor/sqlite3/current/os_os2.h
===================================================================
--- Frontier/vendor/sqlite3/current/os_os2.h 2006-10-01 00:43:51 UTC (rev 1530)
+++ Frontier/vendor/sqlite3/current/os_os2.h 2006-10-03 02:33:50 UTC (rev 1531)
@@ -1,73 +0,0 @@
-/*
-** 2004 May 22
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This header file defined OS-specific features for OS/2.
-*/
-#ifndef _SQLITE_OS_OS2_H_
-#define _SQLITE_OS_OS2_H_
-
-/*
-** standard include files.
-*/
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-/*
-** Macros used to determine whether or not to use threads. The
-** SQLITE_UNIX_THREADS macro is defined if we are synchronizing for
-** Posix threads and SQLITE_W32_THREADS is defined if we are
-** synchronizing using Win32 threads.
-*/
-/* this mutex implementation only available with EMX */
-#if defined(THREADSAFE) && THREADSAFE
-# include <sys/builtin.h>
-# include <sys/smutex.h>
-# define SQLITE_OS2_THREADS 1
-#endif
-
-/*
-** The OsFile structure is a operating-system independing representation
-** of an open file handle. It is defined differently for each architecture.
-**
-** This is the definition for Unix.
-**
-** OsFile.locktype takes one of the values SHARED_LOCK, RESERVED_LOCK,
-** PENDING_LOCK or EXCLUSIVE_LOCK.
-*/
-typedef struct OsFile OsFile;
-struct OsFile {
- int h; /* The file descriptor (LHANDLE) */
- int locked; /* True if this user holds the lock */
- int delOnClose; /* True if file is to be deleted on close */
- char *pathToDel; /* Name of file to delete on close */
- unsigned char locktype; /* The type of lock held on this fd */
- unsigned char isOpen; /* True if needs to be closed */
- unsigned char fullSync;
-};
-
-/*
-** Maximum number of characters in a temporary file name
-*/
-#define SQLITE_TEMPNAME_SIZE 200
-
-/*
-** Minimum interval supported by sqlite3OsSleep().
-*/
-#define SQLITE_MIN_SLEEP_MS 1
-
-#ifndef SQLITE_DEFAULT_FILE_PERMISSIONS
-# define SQLITE_DEFAULT_FILE_PERMISSIONS 0600
-#endif
-
-#endif /* _SQLITE_OS_OS2_H_ */
Deleted: Frontier/vendor/sqlite3/current/parse.y
===================================================================
--- Frontier/vendor/sqlite3/current/parse.y 2006-10-01 00:43:51 UTC (rev 1530)
+++ Frontier/vendor/sqlite3/current/parse.y 2006-10-03 02:33:50 UTC (rev 1531)
@@ -1,1082 +0,0 @@
-/*
-** 2001 September 15
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-*************************************************************************
-** This file contains SQLite's grammar for SQL. Process this file
-** using the lemon parser generator to generate C code that runs
-** the parser. Lemon will also generate a header file containing
-** numeric codes for all of the tokens.
-**
-** @(#) $Id: parse.y,v 1.206 2006/07/11 10:42:36 drh Exp $
-*/
-
-// All token codes are small integers with #defines that begin with "TK_"
-%token_prefix TK_
-
-// The type of the data attached to each token is Token. This is also the
-// default type for non-terminals.
-//
-%token_type {Token}
-%default_type {Token}
-
-// The generated parser function takes a 4th argument as follows:
-%extra_argument {Parse *pParse}
-
-// This code runs whenever there is a syntax error
-//
-%syntax_error {
- if( !pParse->parseError ){
- if( TOKEN.z[0] ){
- sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
- }else{
- sqlite3ErrorMsg(pParse, "incomplete SQL statement");
- }
- pParse->parseError = 1;
- }
-}
-%stack_overflow {
- sqlite3ErrorMsg(pParse, "parser stack overflow");
- pParse->parseError = 1;
-}
-
-// The name of the generated procedure that implements the parser
-// is as follows:
-%name sqlite3Parser
-
-// The following text is included near the beginning of the C source
-// code file that implements the parser.
-//
-%include {
-#include "sqliteInt.h"
-#include "parse.h"
-
-/*
-** An instance of this structure holds information about the
-** LIMIT clause of a SELECT statement.
-*/
-struct LimitVal {
- Expr *pLimit; /* The LIMIT expression. NULL if there is no limit */
- Expr *pOffset; /* The OFFSET expression. NULL if there is none */
-};
-
-/*
-** An instance of this structure is used to store the LIKE,
-** GLOB, NOT LIKE, and NOT GLOB operators.
-*/
-struct LikeOp {
- Token eOperator; /* "like" or "glob" or "regexp" */
- int not; /* True if the NOT keyword is present */
-};
-
-/*
-** An instance of the following structure describes the event of a
-** TRIGGER. "a" is the event type, one of TK_UPDATE, TK_INSERT,
-** TK_DELETE, or TK_INSTEAD. If the event is of the form
-**
-** UPDATE ON (a,b,c)
-**
-** Then the "b" IdList records the list "a,b,c".
-*/
-struct TrigEvent { int a; IdList * b; };
-
-/*
-** An instance of this structure holds the ATTACH key and the key type.
-*/
-struct AttachKey { int type; Token key; };
-
-} // end %include
-
-// Input is a single SQL command
-input ::= cmdlist.
-cmdlist ::= cmdlist ecmd.
-cmdlist ::= ecmd.
-cmdx ::= cmd. { sqlite3FinishCoding(pParse); }
-ecmd ::= SEMI.
-ecmd ::= explain cmdx SEMI.
-explain ::= . { sqlite3BeginParse(pParse, 0); }
-%ifndef SQLITE_OMIT_EXPLAIN
-explain ::= EXPLAIN. { sqlite3BeginParse(pParse, 1); }
-explain ::= EXPLAIN QUERY PLAN. { sqlite3BeginParse(pParse, 2); }
-%endif
-
-///////////////////// Begin and end transactions. ////////////////////////////
-//
-
-cmd ::= BEGIN transtype(Y) trans_opt. {sqlite3BeginTransaction(pParse, Y);}
-trans_opt ::= .
-trans_opt ::= TRANSACTION.
-trans_opt ::= TRANSACTION nm.
-%type transtype {int}
-transtype(A) ::= . {A = TK_DEFERRED;}
-transtype(A) ::= DEFERRED(X). {A = @X;}
-transtype(A) ::= IMMEDIATE(X). {A = @X;}
-transtype(A) ::= EXCLUSIVE(X). {A = @X;}
-cmd ::= COMMIT trans_opt. {sqlite3CommitTransaction(pParse);}
-cmd ::= END trans_opt. {sqlite3CommitTransaction(pParse);}
-cmd ::= ROLLBACK trans_opt. {sqlite3RollbackTransaction(pParse);}
-
-///////////////////// The CREATE TABLE statement ////////////////////////////
-//
-cmd ::= create_table create_table_args.
-create_table ::= CREATE temp(T) TABLE ifnotexists(E) nm(Y) dbnm(Z). {
- sqlite3StartTable(pParse,&Y,&Z,T,0,0,E);
-}
-%type ifnotexists {int}
-ifnotexists(A) ::= . {A = 0;}
-ifnotexists(A) ::= IF NOT EXISTS. {A = 1;}
-%type temp {int}
-%ifndef SQLITE_OMIT_TEMPDB
-temp(A) ::= TEMP. {A = 1;}
-%endif
-temp(A) ::= . {A = 0;}
-create_table_args ::= LP columnlist conslist_opt(X) RP(Y). {
- sqlite3EndTable(pParse,&X,&Y,0);
-}
-create_table_args ::= AS select(S). {
- sqlite3EndTable(pParse,0,0,S);
- sqlite3SelectDelete(S);
-}
-columnlist ::= columnlist COMMA column.
-columnlist ::= column.
-
-// A "column" is a complete description of a single column in a
-// CREATE TABLE statement. This includes the column name, its
-// datatype, and other keywords such as PRIMARY KEY, UNIQUE, REFERENCES,
-// NOT NULL and so forth.
-//
-column(A) ::= columnid(X) type carglist. {
- A.z = X.z;
- A.n = (pParse->sLastToken.z-X.z) + pParse->sLastToken.n;
-}
-columnid(A) ::= nm(X). {
- sqlite3AddColumn(pParse,&X);
- A = X;
-}
-
-
-// An IDENTIFIER can be a generic identifier, or one of several
-// keywords. Any non-standard keyword can also be an identifier.
-//
-%type id {Token}
-id(A) ::= ID(X). {A = X;}
-
-// The following directive causes tokens ABORT, AFTER, ASC, etc. to
-// fallback to ID if they will not parse as their original value.
-// This obviates the need for the "id" nonterminal.
-//
-%fallback ID
- ABORT AFTER ANALYZE ASC ATTACH BEFORE BEGIN CASCADE CAST CONFLICT
- DATABASE DEFERRED DESC DETACH EACH END EXCLUSIVE EXPLAIN FAIL FOR
- IGNORE IMMEDIATE INITIALLY INSTEAD LIKE_KW MATCH PLAN QUERY KEY
- OF OFFSET PRAGMA RAISE REPLACE RESTRICT ROW STATEMENT
- TEMP TRIGGER VACUUM VIEW VIRTUAL
-%ifdef SQLITE_OMIT_COMPOUND_SELECT
- EXCEPT INTERSECT UNION
-%endif
- REINDEX RENAME CTIME_KW IF
- .
-%wildcard ANY.
-
-// Define operator precedence early so that this is the first occurance
-// of the operator tokens in the grammer. Keeping the operators together
-// causes them to be assigned integer values that are close together,
-// which keeps parser tables smaller.
-//
-// The token values assigned to these symbols is determined by the order
-// in which lemon first sees them. It must be the case that ISNULL/NOTNULL,
-// NE/EQ, GT/LE, and GE/LT are separated by only a single value. See
-// the sqlite3ExprIfFalse() routine for additional information on this
-// constraint.
-//
-%left OR.
-%left AND.
-%right NOT.
-%left IS MATCH LIKE_KW BETWEEN IN ISNULL NOTNULL NE EQ.
-%left GT LE LT GE.
-%right ESCAPE.
-%left BITAND BITOR LSHIFT RSHIFT.
-%left PLUS MINUS.
-%left STAR SLASH REM.
-%left CONCAT.
-%right UMINUS UPLUS BITNOT.
-
-// And "ids" is an identifer-or-string.
-//
-%type ids {Token}
-ids(A) ::= ID|STRING(X). {A = X;}
-
-// The name of a column or table can be any of the following:
-//
-%type nm {Token}
-nm(A) ::= ID(X). {A = X;}
-nm(A) ::= STRING(X). {A = X;}
-nm(A) ::= JOIN_KW(X). {A = X;}
-
-// A typetoken is really one or more tokens that form a type name such
-// as can be found after the column name in a CREATE TABLE statement.
-// Multiple tokens are concatenated to form the value of the typetoken.
-//
-%type typetoken {Token}
-type ::= .
-type ::= typetoken(X). {sqlite3AddColumnType(pParse,&X);}
-typetoken(A) ::= typename(X). {A = X;}
-typetoken(A) ::= typename(X) LP signed RP(Y). {
- A.z = X.z;
- A.n = &Y.z[Y.n] - X.z;
-}
-typetoken(A) ::= typename(X) LP signed COMMA signed RP(Y). {
- A.z = X.z;
- A.n = &Y.z[Y.n] - X.z;
-}
-%type typename {Token}
-typename(A) ::= ids(X). {A = X;}
-typename(A) ::= typename(X) ids(Y). {A.z=X.z; A.n=Y.n+(Y.z-X.z);}
-%type signed {int}
-signed(A) ::= plus_num(X). { A = atoi((char*)X.z); }
-signed(A) ::= minus_num(X). { A = -atoi((char*)X.z); }
-
-// "carglist" is a list of additional constraints that come after the
-// column name and column type in a CREATE TABLE statement.
-//
-carglist ::= carglist carg.
-carglist ::= .
-carg ::= CONSTRAINT nm ccons.
-carg ::= ccons.
-carg ::= DEFAULT term(X). {sqlite3AddDefaultValue(pParse,X);}
-carg ::= DEFAULT LP expr(X) RP. {sqlite3AddDefaultValue(pParse,X);}
-carg ::= DEFAULT PLUS term(X). {sqlite3AddDefaultValue(pParse,X);}
-carg ::= DEFAULT MINUS term(X). {
- Expr *p = sqlite3Expr(TK_UMINUS, X, 0, 0);
- sqlite3AddDefaultValue(pParse,p);
-}
-carg ::= DEFAULT id(X). {
- Expr *p = sqlite3Expr(TK_STRING, 0, 0, &X);
- sqlite3AddDefaultValue(pParse,p);
-}
-
-// In addition to the type name, we also care about the primary key and
-// UNIQUE constraints.
-//
-ccons ::= NULL onconf.
-ccons ::= NOT NULL onconf(R). {sqlite3AddNotNull(pParse, R);}
-ccons ::= PRIMARY KEY sortorder(Z) onconf(R) autoinc(I).
- {sqlite3AddPrimaryKey(pParse,0,R,I,Z);}
-ccons ::= UNIQUE onconf(R). {sqlite3CreateIndex(pParse,0,0,0,0,R,0,0,0,0);}
-ccons ::= CHECK LP expr(X) RP. {sqlite3AddCheckConstraint(pParse,X);}
-ccons ::= REFERENCES nm(T) idxlist_opt(TA) refargs(R).
- {sqlite3CreateForeignKey(pParse,0,&T,TA,R);}
-ccons ::= defer_subclause(D). {sqlite3DeferForeignKey(pParse,D);}
-ccons ::= COLLATE id(C). {sqlite3AddCollateType(pParse, (char*)C.z, C.n);}
-
-// The optional AUTOINCREMENT keyword
-%type autoinc {int}
-autoinc(X) ::= . {X = 0;}
-autoinc(X) ::= AUTOINCR. {X = 1;}
-
-// The next group of rules parses the arguments to a REFERENCES clause
-// that determine if the referential integrity checking is deferred or
-// or immediate and which determine what action to take if a ref-integ
-// check fails.
-//
-%type refargs {int}
-refargs(A) ::= . { A = OE_Restrict * 0x010101; }
-refargs(A) ::= refargs(X) refarg(Y). { A = (X & Y.mask) | Y.value; }
-%type refarg {struct {int value; int mask;}}
-refarg(A) ::= MATCH nm. { A.value = 0; A.mask = 0x000000; }
-refarg(A) ::= ON DELETE refact(X). { A.value = X; A.mask = 0x0000ff; }
-refarg(A) ::= ON UPDATE refact(X). { A.value = X<<8; A.mask = 0x00ff00; }
-refarg(A) ::= ON INSERT refact(X). { A.value = X<<16; A.mask = 0xff0000; }
-%type refact {int}
-refact(A) ::= SET NULL. { A = OE_SetNull; }
-refact(A) ::= SET DEFAULT. { A = OE_SetDflt; }
-refact(A) ::= CASCADE. { A = OE_Cascade; }
-refact(A) ::= RESTRICT. { A = OE_Restrict; }
-%type defer_subclause {int}
-defer_subclause(A) ::= NOT DEFERRABLE init_deferred_pred_opt(X). {A = X;}
-defer_subclause(A) ::= DEFERRABLE init_deferred_pred_opt(X). {A = X;}
-%type init_deferred_pred_opt {int}
-init_deferred_pred_opt(A) ::= . {A = 0;}
-init_deferred_pred_opt(A) ::= INITIALLY DEFERRED. {A = 1;}
-init_deferred_pred_opt(A) ::= INITIALLY IMMEDIATE. {A = 0;}
-
-// For the time being, the only constraint we care about is the primary
-// key and UNIQUE. Both create indices.
-//
-conslist_opt(A) ::= . {A.n = 0; A.z = 0;}
-conslist_opt(A) ::= COMMA(X) conslist. {A = X;}
-conslist ::= conslist COMMA tcons.
-conslist ::= conslist tcons.
-conslist ::= tcons.
-tcons ::= CONSTRAINT nm.
-tcons ::= PRIMARY KEY LP idxlist(X) autoinc(I) RP onconf(R).
- {sqlite3AddPrimaryKey(pParse,X,R,I,0);}
-tcons ::= UNIQUE LP idxlist(X) RP onconf(R).
- {sqlite3CreateIndex(pParse,0,0,0,X,R,0,0,0,0);}
-tcons ::= CHECK LP expr(E) RP onconf. {sqlite3AddCheckConstraint(pParse,E);}
-tcons ::= FOREIGN KEY LP idxlist(FA) RP
- REFERENCES nm(T) idxlist_opt(TA) refargs(R) defer_subclause_opt(D). {
- sqlite3CreateForeignKey(pParse, FA, &T, TA, R);
- sqlite3DeferForeignKey(pParse, D);
-}
-%type defer_subclause_opt {int}
-defer_subclause_opt(A) ::= . {A = 0;}
-defer_subclause_opt(A) ::= defer_subclause(X). {A = X;}
-
-// The following is a non-standard extension that allows us to declare the
-// default behavior when there is a constraint conflict.
-//
-%type onconf {int}
-%type orconf {int}
-%type resolvetype {int}
-onconf(A) ::= . {A = OE_Default;}
-onconf(A) ::= ON CONFLICT resolvetype(X). {A = X;}
-orconf(A) ::= . {A = OE_Default;}
-orconf(A) ::= OR resolvetype(X). {A = X;}
-resolvetype(A) ::= raisetype(X). {A = X;}
-resolvetype(A) ::= IGNORE. {A = OE_Ignore;}
-resolvetype(A) ::= REPLACE. {A = OE_Replace;}
-
-////////////////////////// The DROP TABLE /////////////////////////////////////
-//
-cmd ::= DROP TABLE ifexists(E) fullname(X). {
- sqlite3DropTable(pParse, X, 0, E);
-}
-%type ifexists {int}
-ifexists(A) ::= IF EXISTS. {A = 1;}
-ifexists(A) ::= . {A = 0;}
-
-///////////////////// The CREATE VIEW statement /////////////////////////////
-//
-%ifndef SQLITE_OMIT_VIEW
-cmd ::= CREATE(X) temp(T) VIEW nm(Y) dbnm(Z) AS select(S). {
- sqlite3CreateView(pParse, &X, &Y, &Z, S, T);
-}
-cmd ::= DROP VIEW ifexists(E) fullname(X). {
- sqlite3DropTable(pParse, X, 1, E);
-}
-%endif // SQLITE_OMIT_VIEW
-
-//////////////////////// The SELECT statement /////////////////////////////////
-//
-cmd ::= select(X). {
- sqlite3Select(pParse, X, SRT_Callback, 0, 0, 0, 0, 0);
- sqlite3SelectDelete(X);
-}
-
-%type select {Select*}
-%destructor select {sqlite3SelectDelete($$);}
-%type oneselect {Select*}
-%destructor oneselect {sqlite3SelectDelete($$);}
-
-select(A) ::= oneselect(X). {A = X;}
-%ifndef SQLITE_OMIT_COMPOUND_SELECT
-select(A) ::= select(X) multiselect_op(Y) oneselect(Z). {
- if( Z ){
- Z->op = Y;
- Z->pPrior = X;
- }
- A = Z;
-}
-%type multiselect_op {int}
-multiselect_op(A) ::= UNION(OP). {A = @OP;}
-multiselect_op(A) ::= UNION ALL. {A = TK_ALL;}
-multiselect_op(A) ::= EXCEPT|INTERSECT(OP). {A = @OP;}
-%endif // SQLITE_OMIT_COMPOUND_SELECT
-oneselect(A) ::= SELECT distinct(D) selcollist(W) from(X) where_opt(Y)
- groupby_opt(P) having_opt(Q) orderby_opt(Z) limit_opt(L). {
- A = sqlite3SelectNew(W,X,Y,P,Q,Z,D,L.pLimit,L.pOffset);
-}
-
-// The "distinct" nonterminal is true (1) if the DISTINCT keyword is
-// present and false (0) if it is not.
-//
-%type distinct {int}
-distinct(A) ::= DISTINCT. {A = 1;}
-distinct(A) ::= ALL. {A = 0;}
-distinct(A) ::= . {A = 0;}
-
-// selcollist is a list of expressions that are to become the return
-// values of the SELECT statement. The "*" in statements like
-// "SELECT * FROM ..." is encoded as a special expression with an
-// opcode of TK_ALL.
-//
-%type selcollist {ExprList*}
-%destructor selcollist {sqlite3ExprListDelete($$);}
-%type sclp {ExprList*}
-%destructor sclp {sqlite3ExprListDelete($$);}
-sclp(A) ::= selcollist(X) COMMA. {A = X;}
-sclp(A) ::= . {A = 0;}
-selcollist(A) ::= sclp(P) expr(X) as(Y). {
- A = sqlite3ExprListAppend(P,X,Y.n?&Y:0);
-}
-selcollist(A) ::= sclp(P) STAR. {
- A = sqlite3ExprListAppend(P, sqlite3Expr(TK_ALL, 0, 0, 0), 0);
-}
-selcollist(A) ::= sclp(P) nm(X) DOT STAR. {
- Expr *pRight = sqlite3Expr(TK_ALL, 0, 0, 0);
- Expr *pLeft = sqlite3Expr(TK_ID, 0, 0, &X);
- A = sqlite3ExprListAppend(P, sqlite3Expr(TK_DOT, pLeft, pRight, 0), 0);
-}
-
-// An option "AS <id>" phrase that can follow one of the expressions that
-// define the result set, or one of the tables in the FROM clause.
-//
-%type as {Token}
-as(X) ::= AS nm(Y). {X = Y;}
-as(X) ::= ids(Y). {X = Y;}
-as(X) ::= . {X.n = 0;}
-
-
-%type seltablist {SrcList*}
-%destructor seltablist {sqlite3SrcListDelete($$);}
-%type stl_prefix {SrcList*}
-%destructor stl_prefix {sqlite3SrcListDelete($$);}
-%type from {SrcList*}
-%destructor from {sqlite3SrcListDelete($$);}
-
-// A complete FROM clause.
-//
-from(A) ::= . {A = sqliteMalloc(sizeof(*A));}
-from(A) ::= FROM seltablist(X). {A = X;}
-
-// "seltablist" is a "Select Table List" - the content of the FROM clause
-// in a SELECT statement. "stl_prefix" is a prefix of this list.
-//
-stl_prefix(A) ::= seltablist(X) joinop(Y). {
- A = X;
- if( A && A->nSrc>0 ) A->a[A->nSrc-1].jointype = Y;
-}
-stl_prefix(A) ::= . {A = 0;}
-seltablist(A) ::= stl_prefix(X) nm(Y) dbnm(D) as(Z) on_opt(N) using_opt(U). {
- A = sqlite3SrcListAppend(X,&Y,&D);
- if( Z.n ) sqlite3SrcListAddAlias(A,&Z);
- if( N ){
- if( A && A->nSrc>1 ){ A->a[A->nSrc-2].pOn = N; }
- else { sqlite3ExprDelete(N); }
- }
- if( U ){
- if( A && A->nSrc>1 ){ A->a[A->nSrc-2].pUsing = U; }
- else { sqlite3IdListDelete(U); }
- }
-}
-%ifndef SQLITE_OMIT_SUBQUERY
- seltablist(A) ::= stl_prefix(X) LP seltablist_paren(S) RP
- as(Z) on_opt(N) using_opt(U). {
- A = sqlite3SrcListAppend(X,0,0);
- if( A && A->nSrc>0 ) A->a[A->nSrc-1].pSelect = S;
- if( Z.n ) sqlite3SrcListAddAlias(A,&Z);
- if( N ){
- if( A && A->nSrc>1 ){ A->a[A->nSrc-2].pOn = N; }
- else { sqlite3ExprDelete(N); }
- }
- if( U ){
- if( A && A->nSrc>1 ){ A->a[A->nSrc-2].pUsing = U; }
- else { sqlite3IdListDelete(U); }
- }
- }
-
- // A seltablist_paren nonterminal represents anything in a FROM that
- // is contained inside parentheses. This can be either a subquery or
- // a grouping of table and subqueries.
- //
- %type seltablist_paren {Select*}
- %destructor seltablist_paren {sqlite3SelectDelete($$);}
- seltablist_paren(A) ::= select(S). {A = S;}
- seltablist_paren(A) ::= seltablist(F). {
- A = sqlite3SelectNew(0,F,0,0,0,0,0,0,0);
- }
-%endif // SQLITE_OMIT_SUBQUERY
-
-%type dbnm {Token}
-dbnm(A) ::= . {A.z=0; A.n=0;}
-dbnm(A) ::= DOT nm(X). {A = X;}
-
-%type fullname {SrcList*}
-%destructor fullname {sqlite3SrcListDelete($$);}
-fullname(A) ::= nm(X) dbnm(Y). {A = sqlite3SrcListAppend(0,&X,&Y);}
-
-%type joinop {int}
-%type joinop2 {int}
-joinop(X) ::= COMMA|JOIN. { X = JT_INNER; }
-joinop(X) ::= JOIN_KW(A) JOIN. { X = sqlite3JoinType(pParse,&A,0,0); }
-joinop(X) ::= JOIN_KW(A) nm(B) JOIN. { X = sqlite3JoinType(pParse,&A,&B,0); }
-joinop(X) ::= JOIN_KW(A) nm(B) nm(C) JOIN.
- { X = sqlite3JoinType(pParse,&A,&B,&C); }
-
-%type on_opt {Expr*}
-%destructor on_opt {sqlite3ExprDelete($$);}
-on_opt(N) ::= ON expr(E). {N = E;}
-on_opt(N) ::= . {N = 0;}
-
-%type using_opt {IdList*}
-%destructor using_opt {sqlite3IdListDelete($$);}
-using_opt(U) ::= USING LP inscollist(L) RP. {U = L;}
-using_opt(U) ::= . {U = 0;}
-
-
-%type orderby_opt {ExprList*}
-%destructor orderby_opt {sqlite3ExprListDelete($$);}
-%type sortlist {ExprList*}
-%destructor sortlist {sqlite3ExprListDelete($$);}
-%type sortitem {Expr*}
-%destructor sortitem {sqlite3ExprDelete($$);}
-
-orderby_opt(A) ::= . {A = 0;}
-orderby_opt(A) ::= ORDER BY sortlist(X). {A = X;}
-sortlist(A) ::= sortlist(X) COMMA sortitem(Y) collate(C) sortorder(Z). {
- A = sqlite3ExprListAppend(X,Y,C.n>0?&C:0);
- if( A ) A->a[A->nExpr-1].sortOrder = Z;
-}
-sortlist(A) ::= sortitem(Y) collate(C) sortorder(Z). {
- A = sqlite3ExprListAppend(0,Y,C.n>0?&C:0);
- if( A && A->a ) A->a[0].sortOrder = Z;
-}
-sortitem(A) ::= expr(X). {A = X;}
-
-%type sortorder {int}
-%type collate {Token}
-
-sortorder(A) ::= ASC. {A = SQLITE_SO_ASC;}
-sortorder(A) ::= DESC. {A = SQLITE_SO_DESC;}
-sortorder(A) ::= . {A = SQLITE_SO_ASC;}
-collate(C) ::= . {C.z = 0; C.n = 0;}
-collate(C) ::= COLLATE id(X). {C = X;}
-
-%type groupby_opt {ExprList*}
-%destructor groupby_opt {sqlite3ExprListDelete($$);}
-groupby_opt(A) ::= . {A = 0;}
-groupby_opt(A) ::= GROUP BY exprlist(X). {A = X;}
-
-%type having_opt {Expr*}
-%destructor having_opt {sqlite3ExprDelete($$);}
-having_opt(A) ::= . {A = 0;}
-having_opt(A) ::= HAVING expr(X). {A = X;}
-
-%type limit_opt {struct LimitVal}
-%destructor limit_opt {
- sqlite3ExprDelete($$.pLimit);
- sqlite3ExprDelete($$.pOffset);
-}
-limit_opt(A) ::= . {A.pLimit = 0; A.pOffset = 0;}
-limit_opt(A) ::= LIMIT expr(X). {A.pLimit = X; A.pOffset = 0;}
-limit_opt(A) ::= LIMIT expr(X) OFFSET expr(Y).
- {A.pLimit = X; A.pOffset = Y;}
-limit_opt(A) ::= LIMIT expr(X) COMMA expr(Y).
- {A.pOffset = X; A.pLimit = Y;}
-
-/////////////////////////// The DELETE statement /////////////////////////////
-//
-cmd ::= DELETE FROM fullname(X) where_opt(Y). {sqlite3DeleteFrom(pParse,X,Y);}
-
-%type where_opt {Expr*}
-%destructor where_opt {sqlite3ExprDelete($$);}
-
-where_opt(A) ::= . {A = 0;}
-where_opt(A) ::= WHERE expr(X). {A = X;}
-
-////////////////////////// The UPDATE command ////////////////////////////////
-//
-cmd ::= UPDATE orconf(R) fullname(X) SET setlist(Y) where_opt(Z).
- {sqlite3Update(pParse,X,Y,Z,R);}
-
-%type setlist {ExprList*}
-%destructor setlist {sqlite3ExprListDelete($$);}
-
-setlist(A) ::= setlist(Z) COMMA nm(X) EQ expr(Y).
- {A = sqlite3ExprListAppend(Z,Y,&X);}
-setlist(A) ::= nm(X) EQ expr(Y). {A = sqlite3ExprListAppend(0,Y,&X);}
-
-////////////////////////// The INSERT command /////////////////////////////////
-//
-cmd ::= insert_cmd(R) INTO fullname(X) inscollist_opt(F)
- VALUES LP itemlist(Y) RP.
- {sqlite3Insert(pParse, X, Y, 0, F, R);}
-cmd ::= insert_cmd(R) INTO fullname(X) inscollist_opt(F) select(S).
- {sqlite3Insert(pParse, X, 0, S, F, R);}
-
-%type insert_cmd {int}
-insert_cmd(A) ::= INSERT orconf(R). {A = R;}
-insert_cmd(A) ::= REPLACE. {A = OE_Replace;}
-
-
-%type itemlist {ExprList*}
-%destructor itemlist {sqlite3ExprListDelete($$);}
-
-itemlist(A) ::= itemlist(X) COMMA expr(Y). {A = sqlite3ExprListAppend(X,Y,0);}
-itemlist(A) ::= expr(X). {A = sqlite3ExprListAppend(0,X,0);}
-
-%type inscollist_opt {IdList*}
-%destructor inscollist_opt {sqlite3IdListDelete($$);}
-%type inscollist {IdList*}
-%destructor inscollist {sqlite3IdListDelete($$);}
-
-inscollist_opt(A) ::= . {A = 0;}
-inscollist_opt(A) ::= LP inscollist(X) RP. {A = X;}
-inscollist(A) ::= inscollist(X) COMMA nm(Y). {A = sqlite3IdListAppend(X,&Y);}
-inscollist(A) ::= nm(Y). {A = sqlite3IdListAppend(0,&Y);}
-
-/////////////////////////// Expression Processing /////////////////////////////
-//
-
-%type expr {Expr*}
-%destructor expr {sqlite3ExprDelete($$);}
-%type term {Expr*}
-%destructor term {sqlite3ExprDelete($$);}
-
-expr(A) ::= term(X). {A = X;}
-expr(A) ::= LP(B) expr(X) RP(E). {A = X; sqlite3ExprSpan(A,&B,&E); }
-term(A) ::= NULL(X). {A = sqlite3Expr(@X, 0, 0, &X);}
-expr(A) ::= ID(X). {A = sqlite3Expr(TK_ID, 0, 0, &X);}
-expr(A) ::= JOIN_KW(X). {A = sqlite3Expr(TK_ID, 0, 0, &X);}
-expr(A) ::= nm(X) DOT nm(Y). {
- Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &X);
- Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &Y);
- A = sqlite3Expr(TK_DOT, temp1, temp2, 0);
-}
-expr(A) ::= nm(X) DOT nm(Y) DOT nm(Z). {
- Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &X);
- Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &Y);
- Expr *temp3 = sqlite3Expr(TK_ID, 0, 0, &Z);
- Expr *temp4 = sqlite3Expr(TK_DOT, temp2, temp3, 0);
- A = sqlite3Expr(TK_DOT, temp1, temp4, 0);
-}
-term(A) ::= INTEGER|FLOAT|BLOB(X). {A = sqlite3Expr(@X, 0, 0, &X);}
-term(A) ::= STRING(X). {A = sqlite3Expr(@X, 0, 0, &X);}
-expr(A) ::= REGISTER(X). {A = sqlite3RegisterExpr(pParse, &X);}
-expr(A) ::= VARIABLE(X). {
- Token *pToken = &X;
- Expr *pExpr = A = sqlite3Expr(TK_VARIABLE, 0, 0, pToken);
- sqlite3ExprAssignVarNumber(pParse, pExpr);
-}
-%ifndef SQLITE_OMIT_CAST
-expr(A) ::= CAST(X) LP expr(E) AS typetoken(T) RP(Y). {
- A = sqlite3Expr(TK_CAST, E, 0, &T);
- sqlite3ExprSpan(A,&X,&Y);
-}
-%endif // SQLITE_OMIT_CAST
-expr(A) ::= ID(X) LP distinct(D) exprlist(Y) RP(E). {
- A = sqlite3ExprFunction(Y, &X);
- sqlite3ExprSpan(A,&X,&E);
- if( D && A ){
- A->flags |= EP_Distinct;
- }
-}
-expr(A) ::= ID(X) LP STAR RP(E). {
- A = sqlite3ExprFunction(0, &X);
- sqlite3ExprSpan(A,&X,&E);
-}
-term(A) ::= CTIME_KW(OP). {
- /* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are
- ** treated as functions that return constants */
- A = sqlite3ExprFunction(0,&OP);
- if( A ) A->op = TK_CONST_FUNC;
-}
-expr(A) ::= expr(X) AND(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) OR(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) LT|GT|GE|LE(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) EQ|NE(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) BITAND|BITOR|LSHIFT|RSHIFT(OP) expr(Y).
- {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) PLUS|MINUS(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) STAR|SLASH|REM(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-expr(A) ::= expr(X) CONCAT(OP) expr(Y). {A = sqlite3Expr(@OP, X, Y, 0);}
-%type likeop {struct LikeOp}
-likeop(A) ::= LIKE_KW(X). {A.eOperator = X; A.not = 0;}
-likeop(A) ::= NOT LIKE_KW(X). {A.eOperator = X; A.not = 1;}
-likeop(A) ::= MATCH(X). {A.eOperator = X; A.not = 0;}
-likeop(A) ::= NOT MATCH(X). {A.eOperator = X; A.not = 1;}
-%type escape {Expr*}
-%destructor escape {sqlite3ExprDelete($$);}
-escape(X) ::= ESCAPE expr(A). [ESCAPE] {X = A;}
-escape(X) ::= . [ESCAPE] {X = 0;}
-expr(A) ::= expr(X) likeop(OP) expr(Y) escape(E). [LIKE_KW] {
- ExprList *pList;
- pList = sqlite3ExprListAppend(0, Y, 0);
- pList = sqlite3ExprListAppend(pList, X, 0);
- if( E ){
- pList = sqlite3ExprListAppend(pList, E, 0);
- }
- A = sqlite3ExprFunction(pList, &OP.eOperator);
- if( OP.not ) A = sqlite3Expr(TK_NOT, A, 0, 0);
- sqlite3ExprSpan(A, &X->span, &Y->span);
- if( A ) A->flags |= EP_InfixFunc;
-}
-
-expr(A) ::= expr(X) ISNULL|NOTNULL(E). {
- A = sqlite3Expr(@E, X, 0, 0);
- sqlite3ExprSpan(A,&X->span,&E);
-}
-expr(A) ::= expr(X) IS NULL(E). {
- A = sqlite3Expr(TK_ISNULL, X, 0, 0);
- sqlite3ExprSpan(A,&X->span,&E);
-}
-expr(A) ::= expr(X) NOT NULL(E). {
- A = sqlite3Expr(TK_NOTNULL, X, 0, 0);
- sqlite3ExprSpan(A,&X->span,&E);
-}
-expr(A) ::= expr(X) IS NOT NULL(E). {
- A = sqlite3Expr(TK_NOTNULL, X, 0, 0);
- sqlite3ExprSpan(A,&X->span,&E);
-}
-expr(A) ::= NOT|BITNOT(B) expr(X). {
- A = sqlite3Expr(@B, X, 0, 0);
- sqlite3ExprSpan(A,&B,&X->span);
-}
-expr(A) ::= MINUS(B) expr(X). [UMINUS] {
- A = sqlite3Expr(TK_UMINUS, X, 0, 0);
- sqlite3ExprSpan(A,&B,&X->span);
-}
-expr(A) ::= PLUS(B) expr(X). [UPLUS] {
- A = sqlite3Expr(TK_UPLUS, X, 0, 0);
- sqlite3ExprSpan(A,&B,&X->span);
-}
-%type between_op {int}
-between_op(A) ::= BETWEEN. {A = 0;}
-between_op(A) ::= NOT BETWEEN. {A = 1;}
-expr(A) ::= expr(W) between_op(N) expr(X) AND expr(Y). [BETWEEN] {
- ExprList *pList = sqlite3ExprListAppend(0, X, 0);
- pList = sqlite3ExprListAppend(pList, Y, 0);
- A = sqlite3Expr(TK_BETWEEN, W, 0, 0);
- if( A ){
- A->pList = pList;
- }else{
- sqlite3ExprListDelete(pList);
- }
- if( N ) A = sqlite3Expr(TK_NOT, A, 0, 0);
- sqlite3ExprSpan(A,&W->span,&Y->span);
-}
-%ifndef SQLITE_OMIT_SUBQUERY
- %type in_op {int}
- in_op(A) ::= IN. {A = 0;}
- in_op(A) ::= NOT IN. {A = 1;}
- expr(A) ::= expr(X) in_op(N) LP exprlist(Y) RP(E). [IN] {
- A = sqlite3Expr(TK_IN, X, 0, 0);
- if( A ){
- A->pList = Y;
- }else{
- sqlite3ExprListDelete(Y);
- }
- if( N ) A = sqlite3Expr(TK_NOT, A, 0, 0);
- sqlite3ExprSpan(A,&X->span,&E);
- }
- expr(A) ::= LP(B) select(X) RP(E). {
- A = sqlite3Expr(TK_SELECT, 0, 0, 0);
- if( A ){
- A->pSelect = X;
- }else{
- sqlite3SelectDelete(X);
- }
- sqlite3ExprSpan(A,&B,&E);
- }
- expr(A) ::= expr(X) in_op(N) LP select(Y) RP(E). [IN] {
- A = sqlite3Expr(TK_IN, X, 0, 0);
- if( A ){
- A->pSelect = Y;
- }else{
- sqlite3SelectDelete(Y);
- }
- if( N ) A = sqlite3Expr(TK_NOT, A, 0, 0);
- sqlite3ExprSpan(A,&X->span,&E);
- }
- expr(A) ::= expr(X) in_op(N) nm(Y) dbnm(Z). [IN] {
- SrcList *pSrc = sqlite3SrcListAppend(0,&Y,&Z);
- A = sqlite3Expr(TK_IN, X, 0, 0);
- if( A ){
- A->pSelect = sqlite3SelectNew(0,pSrc,0,0,0,0,0,0,0);
- }else{
- sqlite3SrcListDelete(pSrc);
- }
- if( N ) A = sqlite3Expr(TK_NOT, A, 0, 0);
- sqlite3ExprSpan(A,&X->span,Z.z?&Z:&Y);
- }
- expr(A) ::= EXISTS(B) LP select(Y) RP(E). {
- Expr *p = A = sqlite3Expr(TK_EXISTS, 0, 0, 0);
- if( p ){
- p->pSelect = Y;
- sqlite3ExprSpan(p,&B,&E);
- }else{
- sqlite3SelectDelete(Y);
- }
- }
-%endif // SQLITE_OMIT_SUBQUERY
-
-/* CASE expressions */
-expr(A) ::= CASE(C) case_operand(X) case_exprlist(Y) case_else(Z) END(E). {
- A = sqlite3Expr(TK_CASE, X, Z, 0);
- if( A ){
- A->pList = Y;
- }else{
- sqlite3ExprListDelete(Y);
- }
- sqlite3ExprSpan(A, &C, &E);
-}
-%type case_exprlist {ExprList*}
-%destructor case_exprlist {sqlite3ExprListDelete($$);}
-case_exprlist(A) ::= case_exprlist(X) WHEN expr(Y) THEN expr(Z). {
- A = sqlite3ExprListAppend(X, Y, 0);
- A = sqlite3ExprListAppend(A, Z, 0);
-}
-case_exprlist(A) ::= WHEN expr(Y) THEN expr(Z). {
- A = sqlite3ExprListAppend(0, Y, 0);
- A = sqlite3ExprListAppend(A, Z, 0);
-}
-%type case_else {Expr*}
-%destructor case_else {sqlite3ExprDelete($$);}
-case_else(A) ::= ELSE expr(X). {A = X;}
-case_else(A) ::= . {A = 0;}
-%type case_operand {Expr*}
-%destructor case_operand {sqlite3ExprDelete($$);}
-case_operand(A) ::= expr(X). {A = X;}
-case_operand(A) ::= . {A = 0;}
-
-%type exprlist {ExprList*}
-%destructor exprlist {sqlite3ExprListDelete($$);}
-%type expritem {Expr*}
-%destructor expritem {sqlite3ExprDelete($$);}
-
-exprlist(A) ::= exprlist(X) COMMA expritem(Y).
- {A = sqlite3ExprListAppend(X,Y,0);}
-exprlist(A) ::= expritem(X). {A = sqlite3ExprListAppend(0,X,0);}
-expritem(A) ::= expr(X). {A = X;}
-expritem(A) ::= . {A = 0;}
-
-///////////////////////////// The CREATE INDEX command ///////////////////////
-//
-cmd ::= CREATE(S) uniqueflag(U) INDEX ifnotexists(NE) nm(X) dbnm(D)
- ON nm(Y) LP idxlist(Z) RP(E). {
- sqlite3CreateIndex(pParse, &X, &D, sqlite3SrcListAppend(0,&Y,0), Z, U,
- &S, &E, SQLITE_SO_ASC, NE);
-}
-
-%type uniqueflag {int}
-uniqueflag(A) ::= UNIQUE. {A = OE_Abort;}
-uniqueflag(A) ::= . {A = OE_None;}
-
-%type idxlist {ExprList*}
-%destructor idxlist {sqlite3ExprListDelete($$);}
-%type idxlist_opt {ExprList*}
-%destructor idxlist_opt {sqlite3ExprListDelete($$);}
-%type idxitem {Token}
-
-idxlist_opt(A) ::= . {A = 0;}
-idxlist_opt(A) ::= LP idxlist(X) RP. {A = X;}
-idxlist(A) ::= idxlist(X) COMMA idxitem(Y) collate(C) sortorder(Z). {
- Expr *p = 0;
- if( C.n>0 ){
- p = sqlite3Expr(TK_COLUMN, 0, 0, 0);
- if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)C.z, C.n);
- }
- A = sqlite3ExprListAppend(X, p, &Y);
- if( A ) A->a[A->nExpr-1].sortOrder = Z;
-}
-idxlist(A) ::= idxitem(Y) collate(C) sortorder(Z). {
- Expr *p = 0;
- if( C.n>0 ){
- p = sqlite3Expr(TK_COLUMN, 0, 0, 0);
- if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)C.z, C.n);
- }
- A = sqlite3ExprListAppend(0, p, &Y);
- if( A ) A->a[A->nExpr-1].sortOrder = Z;
-}
-idxitem(A) ::= nm(X). {A = X;}
-
-
-///////////////////////////// The DROP INDEX command /////////////////////////
-//
-cmd ::= DROP INDEX ifexists(E) fullname(X). {sqlite3DropIndex(pParse, X, E);}
-
-///////////////////////////// The VACUUM command /////////////////////////////
-//
-cmd ::= VACUUM. {sqlite3Vacuum(pParse);}
-cmd ::= VACUUM nm. {sqlite3Vacuum(pParse);}
-
-///////////////////////////// The PRAGMA command /////////////////////////////
-//
-%ifndef SQLITE_OMIT_PRAGMA
-cmd ::= PRAGMA nm(X) dbnm(Z) EQ nm(Y). {sqlite3Pragma(pParse,&X,&Z,&Y,0);}
-cmd ::= PRAGMA nm(X) dbnm(Z) EQ ON(Y). {sqlite3Pragma(pParse,&X,&Z,&Y,0);}
-cmd ::= PRAGMA nm(X) dbnm(Z) EQ plus_num(Y). {sqlite3Pragma(pParse,&X,&Z,&Y,0);}
-cmd ::= PRAGMA nm(X) dbnm(Z) EQ minus_num(Y). {
- sqlite3Pragma(pParse,&X,&Z,&Y,1);
-}
-cmd ::= PRAGMA nm(X) dbnm(Z) LP nm(Y) RP. {sqlite3Pragma(pParse,&X,&Z,&Y,0);}
-cmd ::= PRAGMA nm(X) dbnm(Z). {sqlite3Pragma(pParse,&X,&Z,0,0);}
-%endif // SQLITE_OMIT_PRAGMA
-plus_num(A) ::= plus_opt number(X). {A = X;}
-minus_num(A) ::= MINUS number(X). {A = X;}
-number(A) ::= INTEGER|FLOAT(X). {A = X;}
-plus_opt ::= PLUS.
-plus_opt ::= .
-
-//////////////////////////// The CREATE TRIGGER command /////////////////////
-
-%ifndef SQLITE_OMIT_TRIGGER
-
-cmd ::= CREATE trigger_decl(A) BEGIN trigger_cmd_list(S) END(Z). {
- Token all;
- all.z = A.z;
- all.n = (Z.z - A.z) + Z.n;
- sqlite3FinishTrigger(pParse, S, &all);
-}
-
-trigger_decl(A) ::= temp(T) TRIGGER nm(B) dbnm(Z) trigger_time(C)
- trigger_event(D)
- ON fullname(E) foreach_clause(F) when_clause(G). {
- sqlite3BeginTrigger(pParse, &B, &Z, C, D.a, D.b, E, F, G, T);
- A = (Z.n==0?B:Z);
-}
-
-%type trigger_time {int}
-trigger_time(A) ::= BEFORE. { A = TK_BEFORE; }
-trigger_time(A) ::= AFTER. { A = TK_AFTER; }
-trigger_time(A) ::= INSTEAD OF. { A = TK_INSTEAD;}
-trigger_time(A) ::= . { A = TK_BEFORE; }
-
-%type trigger_event {struct TrigEvent}
-%destructor trigger_event {sqlite3IdListDelete($$.b);}
-trigger_event(A) ::= DELETE|INSERT(OP). {A.a = @OP; A.b = 0;}
-trigger_event(A) ::= UPDATE(OP). {A.a = @OP; A.b = 0;}
-trigger_event(A) ::= UPDATE OF inscollist(X). {A.a = TK_UPDATE; A.b = X;}
-
-%type foreach_clause {int}
-foreach_clause(A) ::= . { A = TK_ROW; }
-foreach_clause(A) ::= FOR EACH ROW. { A = TK_ROW; }
-foreach_clause(A) ::= FOR EACH STATEMENT. { A = TK_STATEMENT; }
-
-%type when_clause {Expr*}
-%destructor when_clause {sqlite3ExprDelete($$);}
-when_clause(A) ::= . { A = 0; }
-when_clause(A) ::= WHEN expr(X). { A = X; }
-
-%type trigger_cmd_list {TriggerStep*}
-%destructor trigger_cmd_list {sqlite3DeleteTriggerStep($$);}
-trigger_cmd_list(A) ::= trigger_cmd_list(Y) trigger_cmd(X) SEMI. {
- if( Y ){
- Y->pLast->pNext = X;
- }else{
- Y = X;
- }
- Y->pLast = X;
- A = Y;
-}
-trigger_cmd_list(A) ::= . { A = 0; }
-
-%type trigger_cmd {TriggerStep*}
-%destructor trigger_cmd {sqlite3DeleteTriggerStep($$);}
-// UPDATE
-trigger_cmd(A) ::= UPDATE orconf(R) nm(X) SET setlist(Y) where_opt(Z).
- { A = sqlite3TriggerUpdateStep(&X, Y, Z, R); }
-
-// INSERT
-trigger_cmd(A) ::= insert_cmd(R) INTO nm(X) inscollist_opt(F)
- VALUES LP itemlist(Y) RP.
- {A = sqlite3TriggerInsertStep(&X, F, Y, 0, R);}
-
-trigger_cmd(A) ::= insert_cmd(R) INTO nm(X) inscollist_opt(F) select(S).
- {A = sqlite3TriggerInsertStep(&X, F, 0, S, R);}
-
-// DELETE
-trigger_cmd(A) ::= DELETE FROM nm(X) where_opt(Y).
- {A = sqlite3TriggerDeleteStep(&X, Y);}
-
-// SELECT
-trigger_cmd(A) ::= select(X). {A = sqlite3TriggerSelectStep(X); }
-
-// The special RAISE expression that may occur in trigger programs
-expr(A) ::= RAISE(X) LP IGNORE RP(Y). {
- A = sqlite3Expr(TK_RAISE, 0, 0, 0);
- if( A ){
- A->iColumn = OE_Ignore;
- sqlite3ExprSpan(A, &X, &Y);
- }
-}
-expr(A) ::= RAISE(X) LP raisetype(T) COMMA nm(Z) RP(Y). {
- A = sqlite3Expr(TK_RAISE, 0, 0, &Z);
- if( A ) {
- A->iColumn = T;
- sqlite3ExprSpan(A, &X, &Y);
- }
-}
-%endif // !SQLITE_OMIT_TRIGGER
-
-%type raisetype {int}
-raisetype(A) ::= ROLLBACK. {A = OE_Rollback;}
-raisetype(A) ::= ABORT. {A = OE_Abort;}
-raisetype(A) ::= FAIL. {A = OE_Fail;}
-
-
-//////////////////////// DROP TRIGGER statement //////////////////////////////
-%ifndef SQLITE_OMIT_TRIGGER
-cmd ::= DROP TRIGGER fullname(X). {
- sqlite3DropTrigger(pParse,X);
-}
-%endif // !SQLITE_OMIT_TRIGGER
-
-//////////////////////// ATTACH DATABASE file AS name /////////////////////////
-cmd ::= ATTACH database_kw_opt expr(F) AS expr(D) key_opt(K). {
- sqlite3Attach(pParse, F, D, K);
-}
-%type key_opt {Expr *}
-%destructor key_opt {sqlite3ExprDelete($$);}
-key_opt(A) ::= . { A = 0; }
-key_opt(A) ::= KEY expr(X). { A = X; }
-
-database_kw_opt ::= DATABASE.
-database_kw_opt ::= .
-
-//////////////////////// DETACH DATABASE name /////////////////////////////////
-cmd ::= DETACH database_kw_opt expr(D). {
- sqlite3Detach(pParse, D);
-}
-
-////////////////////////// REINDEX collation //////////////////////////////////
-%ifndef SQLITE_OMIT_REINDEX
-cmd ::= REINDEX. {sqlite3Reindex(pParse, 0, 0);}
-cmd ::= REINDEX nm(X) dbnm(Y). {sqlite3Reindex(pParse, &X, &Y);}
-%endif
-
-/////////////////////////////////// ANALYZE ///////////////////////////////////
-%ifndef SQLITE_OMIT_ANALYZE
-cmd ::= ANALYZE. {sqlite3Analyze(pParse, 0, 0);}
-cmd ::= ANALYZE nm(X) dbnm(Y). {sqlite3Analyze(pParse, &X, &Y);}
-%endif
-
-//////////////////////// ALTER TABLE table ... ////////////////////////////////
-%ifndef SQLITE_OMIT_ALTERTABLE
-cmd ::= ALTER TABLE fullname(X) RENAME TO nm(Z). {
- sqlite3AlterRenameTable(pParse,X,&Z);
-}
-cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column(Y). {
- sqlite3AlterFinishAddColumn(pParse, &Y);
-}
-add_column_fullname ::= fullname(X). {
- sqlite3AlterBeginAddColumn(pParse, X);
-}
-kwcolumn_opt ::= .
-kwcolumn_opt ::= COLUMNKW.
-%endif
-
-//////////////////////// CREATE VIRTUAL TABLE ... /////////////////////////////
-%ifndef SQLITE_OMIT_VIRTUALTABLE
-cmd ::= create_vtab. {sqlite3VtabFinishParse(pParse,0);}
-cmd ::= create_vtab LP vtabarglist RP(X). {sqlite3VtabFinishParse(pParse,&X);}
-create_vtab ::= CREATE VIRTUAL TABLE nm(X) dbnm(Y) USING nm(Z). {
- sqlite3VtabBeginParse(pParse, &X, &Y, &Z);
-}
-vtabarglist ::= vtabarg.
-vtabarglist ::= vtabarglist COMMA vtabarg.
-vtabarg ::= . {sqlite3VtabArgInit(pParse);}
-vtabarg ::= vtabarg vtabargtoken.
-vtabargtoken ::= ANY(X). {sqlite3VtabArgExtend(pParse,&X);}
-vtabargtoken ::= lp anylist RP(X). {sqlite3VtabArgExtend(pParse,&X);}
-lp ::= LP(X). {sqlite3VtabArgExtend(pParse,&X);}
-anylist ::= .
-anylist ::= anylist ANY(X). {sqlite3VtabArgExtend(pParse,&X);}
-%endif
Deleted: Frontier/vendor/sqlite3/current/sqlite.h.in
===================================================================
--- Frontier/vendor/sqlite3/current/sqlite.h.in 2006-10-01 00:43:51 UTC (rev 1530)
+++ Frontier/vendor/sqlite3/current/sqlite.h.in 2006-10-03 02:33:50 UTC (rev 1531)
@@ -1,1722 +0,0 @@
-/*
-** 2001 September 15
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-*************************************************************************
-** This header file defines the interface that the SQLite library
-** presents to client programs.
-**
-** @(#) $Id: sqlite.h.in,v 1.187 2006/07/08 18:09:15 drh Exp $
-*/
-#ifndef _SQLITE3_H_
-#define _SQLITE3_H_
-#include <stdarg.h> /* Needed for the definition of va_list */
-
-/*
-** Make sure we can call this stuff from C++.
-*/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** The version of the SQLite library.
-*/
-#ifdef SQLITE_VERSION
-# undef SQLITE_VERSION
-#endif
-#define SQLITE_VERSION "--VERS--"
-
-/*
-** The format of the version string is "X.Y.Z<trailing string>", where
-** X is the major version number, Y is the minor version number and Z
-** is the release number. The trailing string is often "alpha" or "beta".
-** For example "3.1.1beta".
-**
-** The SQLITE_VERSION_NUMBER is an integer with the value
-** (X*100000 + Y*1000 + Z). For example, for version "3.1.1beta",
-** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using
-** version 3.1.1 or greater at compile time, programs may use the test
-** (SQLITE_VERSION_NUMBER>=3001001).
-*/
-#ifdef SQLITE_VERSION_NUMBER
-# undef SQLITE_VERSION_NUMBER
-#endif
-#define SQLITE_VERSION_NUMBER --VERSION-NUMBER--
-
-/*
-** The version string is also compiled into the library so that a program
-** can check to make sure that the lib*.a file and the *.h file are from
-** the same version. The sqlite3_libversion() function returns a pointer
-** to the sqlite3_version variable - useful in DLLs which cannot access
-** global variables.
-*/
-extern const char sqlite3_version[];
-const char *sqlite3_libversion(void);
-
-/*
-** Return the value of the SQLITE_VERSION_NUMBER macro when the
-** library was compiled.
-*/
-int sqlite3_libversion_number(void);
-
-/*
-** Each open sqlite database is represented by an instance of the
-** following opaque structure.
-*/
-typedef struct sqlite3 sqlite3;
-
-
-/*
-** Some compilers do not support the "long long" datatype. So we have
-** to do a typedef that for 64-bit integers that depends on what compiler
-** is being used.
-*/
-#ifdef SQLITE_INT64_TYPE
- typedef SQLITE_INT64_TYPE sqlite_int64;
- typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
-#elif defined(_MSC_VER) || defined(__BORLANDC__)
- typedef __int64 sqlite_int64;
- typedef unsigned __int64 sqlite_uint64;
-#else
- typedef long long int sqlite_int64;
- typedef unsigned long long int sqlite_uint64;
-#endif
-
-/*
-** If compiling for a processor that lacks floating point support,
-** substitute integer for floating-point
-*/
-#ifdef SQLITE_OMIT_FLOATING_POINT
-# define double sqlite_int64
-#endif
-
-/*
-** A function to close the database.
-**
-** Call this function with a pointer to a structure that was previously
-** returned from sqlite3_open() and the corresponding database will by closed.
-**
-** All SQL statements prepared using sqlite3_prepare() or
-** sqlite3_prepare16() must be deallocated using sqlite3_finalize() before
-** this routine is called. Otherwise, SQLITE_BUSY is returned and the
-** database connection remains open.
-*/
-int sqlite3_close(sqlite3 *);
-
-/*
-** The type for a callback function.
-*/
-typedef int (*sqlite3_callback)(void*,int,char**, char**);
-
-/*
-** A function to executes one or more statements of SQL.
-**
-** If one or more of the SQL statements are queries, then
-** the callback function specified by the 3rd parameter is
-** invoked once for each row of the query result. This callback
-** should normally return 0. If the callback returns a non-zero
-** value then the query is aborted, all subsequent SQL statements
-** are skipped and the sqlite3_exec() function returns the SQLITE_ABORT.
-**
-** The 4th parameter is an arbitrary pointer that is passed
-** to the callback function as its first parameter.
-**
-** The 2nd parameter to the callback function is the number of
-** columns in the query result. The 3rd parameter to the callback
-** is an array of strings holding the values for each column.
-** The 4th parameter to the callback is an array of strings holding
-** the names of each column.
-**
-** The callback function may be NULL, even for queries. A NULL
-** callback is not an error. It just means that no callback
-** will be invoked.
-**
-** If an error occurs while parsing or evaluating the SQL (but
-** not while executing the callback) then an appropriate error
-** message is written into memory obtained from malloc() and
-** *errmsg is made to point to that message. The calling function
-** is responsible for freeing the memory that holds the error
-** message. Use sqlite3_free() for this. If errmsg==NULL,
-** then no error message is ever written.
-**
-** The return value is is SQLITE_OK if there are no errors and
-** some other return code if there is an error. The particular
-** return value depends on the type of error.
-**
-** If the query could not be executed because a database file is
-** locked or busy, then this function returns SQLITE_BUSY. (This
-** behavior can be modified somewhat using the sqlite3_busy_handler()
-** and sqlite3_busy_timeout() functions below.)
-*/
-int sqlite3_exec(
- sqlite3*, /* An open database */
- const char *sql, /* SQL to be executed */
- sqlite3_callback, /* Callback function */
- void *, /* 1st argument to callback function */
- char **errmsg /* Error msg written here */
-);
-
-/*
-** Return values for sqlite3_exec() and sqlite3_step()
-*/
-#define SQLITE_OK 0 /* Successful result */
-/* beginning-of-error-codes */
-#define SQLITE_ERROR 1 /* SQL error or missing database */
-#define SQLITE_INTERNAL 2 /* NOT USED. Internal logic error in SQLite */
-#define SQLITE_PERM 3 /* Access permission denied */
-#define SQLITE_ABORT 4 /* Callback routine requested an abort */
-#define SQLITE_BUSY 5 /* The database file is locked */
-#define SQLITE_LOCKED 6 /* A table in the database is locked */
-#define SQLITE_NOMEM 7 /* A malloc() failed */
-#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
-#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
-#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
-#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
-#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
-#define SQLITE_FULL 13 /* Insertion failed because database is full */
-#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
-#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
-#define SQLITE_EMPTY 16 /* Database is empty */
-#define SQLITE_SCHEMA 17 /* The database schema changed */
-#define SQLITE_TOOBIG 18 /* NOT USED. Too much data for one row */
-#define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */
-#define SQLITE_MISMATCH 20 /* Data type mismatch */
-#define SQLITE_MISUSE 21 /* Library used incorrectly */
-#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
-#define SQLITE_AUTH 23 /* Authorization denied */
-#define SQLITE_FORMAT 24 /* Auxiliary database format error */
-#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
-#define SQLITE_NOTADB 26 /* File opened that is not a database file */
-#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
-#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
-/* end-of-error-codes */
-
-/*
-** Each entry in an SQLite table has a unique integer key. (The key is
-** the value of the INTEGER PRIMARY KEY column if there is such a column,
-** otherwise the key is generated at random. The unique key is always
-** available as the ROWID, OID, or _ROWID_ column.) The following routine
-** returns the integer key of the most recent insert in the database.
-**
-** This function is similar to the mysql_insert_id() function from MySQL.
-*/
-sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
-
-/*
-** This function returns the number of database rows that were changed
-** (or inserted or deleted) by the most recent called sqlite3_exec().
-**
-** All changes are counted, even if they were later undone by a
-** ROLLBACK or ABORT. Except, changes associated with creating and
-** dropping tables are not counted.
-**
-** If a callback invokes sqlite3_exec() recursively, then the changes
-** in the inner, recursive call are counted together with the changes
-** in the outer call.
-**
-** SQLite implements the command "DELETE FROM table" without a WHERE clause
-** by dropping and recreating the table. (This is much faster than going
-** through and deleting individual elements form the table.) Because of
-** this optimization, the change count for "DELETE FROM table" will be
-** zero regardless of the number of elements that were originally in the
-** table. To get an accurate count of the number of rows deleted, use
-** "DELETE FROM table WHERE 1" instead.
-*/
-int sqlite3_changes(sqlite3*);
-
-/*
-** This function returns the number of database rows that have been
-** modified by INSERT, UPDATE or DELETE statements since the database handle
-** was opened. This includes UPDATE, INSERT and DELETE statements executed
-** as part of trigger programs. All changes are counted as soon as the
-** statement that makes them is completed (when the statement handle is
-** passed to sqlite3_reset() or sqlite_finalise()).
-**
-** SQLite implements the command "DELETE FROM table" without a WHERE clause
-** by dropping and recreating the table. (This is much faster than going
-** through and deleting individual elements form the table.) Because of
-** this optimization, the change count for "DELETE FROM table" will be
-** zero regardless of the number of elements that were originally in the
-** table. To get an accurate count of the number of rows deleted, use
-** "DELETE FROM table WHERE 1" instead.
-*/
-int sqlite3_total_changes(sqlite3*);
-
-/* This function causes any pending database operation to abort and
-** return at its earliest opportunity. This routine is typically
-** called in response to a user action such as pressing "Cancel"
-** or Ctrl-C where the user wants a long query operation to halt
-** immediately.
-*/
-void sqlite3_interrupt(sqlite3*);
-
-
-/* These functions return true if the given input string comprises
-** one or more complete SQL statements. For the sqlite3_complete() call,
-** the parameter must be a nul-terminated UTF-8 string. For
-** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
-** is required.
-**
-** The algorithm is simple. If the last token other than spaces
-** and comments is a semicolon, then return true. otherwise return
-** false.
-*/
-int sqlite3_complete(const char *sql);
-int sqlite3_complete16(const void *sql);
-
-/*
-** This routine identifies a callback function that is invoked
-** whenever an attempt is made to open a database table that is
-** currently locked by another process or thread. If the busy callback
-** is NULL, then sqlite3_exec() returns SQLITE_BUSY immediately if
-** it finds a locked table. If the busy callback is not NULL, then
-** sqlite3_exec() invokes the callback with three arguments. The
-** second argument is the name of the locked table and the third
-** argument is the number of times the table has been busy. If the
-** busy callback returns 0, then sqlite3_exec() immediately returns
-** SQLITE_BUSY. If the callback returns non-zero, then sqlite3_exec()
-** tries to open the table again and the cycle repeats.
-**
-** The default busy callback is NULL.
-**
-** Sqlite is re-entrant, so the busy handler may start a new query.
-** (It is not clear why anyone would every want to do this, but it
-** is allowed, in theory.) But the busy handler may not close the
-** database. Closing the database from a busy handler will delete
-** data structures out from under the executing query and will
-** probably result in a coredump.
-*/
-int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
-
-/*
-** This routine sets a busy handler that sleeps for a while when a
-** table is locked. The handler will sleep multiple times until
-** at least "ms" milleseconds of sleeping have been done. After
-** "ms" milleseconds of sleeping, the handler returns 0 which
-** causes sqlite3_exec() to return SQLITE_BUSY.
-**
-** Calling this routine with an argument less than or equal to zero
-** turns off all busy handlers.
-*/
-int sqlite3_busy_timeout(sqlite3*, int ms);
-
-/*
-** This next routine is really just a wrapper around sqlite3_exec().
-** Instead of invoking a user-supplied callback for each row of the
-** result, this routine remembers each row of the result in memory
-** obtained from malloc(), then returns all of the result after the
-** query has finished.
-**
-** As an example, suppose the query result where this table:
-**
-** Name | Age
-** -----------------------
-** Alice | 43
-** Bob | 28
-** Cindy | 21
-**
-** If the 3rd argument were &azResult then after the function returns
-** azResult will contain the following data:
-**
-** azResult[0] = "Name";
-** azResult[1] = "Age";
-** azResult[2] = "Alice";
-** azResult[3] = "43";
-** azResult[4] = "Bob";
-** azResult[5] = "28";
-** azResult[6] = "Cindy";
-** azResult[7] = "21";
-**
-** Notice that there is an extra row of data containing the column
-** headers. But the *nrow return value is still 3. *ncolumn is
-** set to 2. In general, the number of values inserted into azResult
-** will be ((*nrow) + 1)*(*ncolumn).
-**
-** After the calling function has finished using the result, it should
-** pass the result data pointer to sqlite3_free_table() in order to
-** release the memory that was malloc-ed. Because of the way the
-** malloc() happens, the calling function must not try to call
-** free() directly. Only sqlite3_free_table() is able to release
-** the memory properly and safely.
-**
-** The return value of this routine is the same as from sqlite3_exec().
-*/
-int sqlite3_get_table(
- sqlite3*, /* An open database */
- const char *sql, /* SQL to be executed */
- char ***resultp, /* Result written to a char *[] that this points to */
- int *nrow, /* Number of result rows written here */
- int *ncolumn, /* Number of result columns written here */
- char **errmsg /* Error msg written here */
-);
-
-/*
-** Call this routine to free the memory that sqlite3_get_table() allocated.
-*/
-void sqlite3_free_table(char **result);
-
-/*
-** The following routines are variants of the "sprintf()" from the
-** standard C library. The resulting string is written into memory
-** obtained from malloc() so that there is never a possiblity of buffer
-** overflow. These routines also implement some additional formatting
-** options that are useful for constructing SQL statements.
-**
-** The strings returned by these routines should be freed by calling
-** sqlite3_free().
-**
-** All of the usual printf formatting options apply. In addition, there
-** is a "%q" option. %q works like %s in that it substitutes a null-terminated
-** string from the argument list. But %q also doubles every '\'' character.
-** %q is designed for use inside a string literal. By doubling each '\''
-** character it escapes that character and allows it to be inserted into
-** the string.
-**
-** For example, so some string variable contains text as follows:
-**
-** char *zText = "It's a happy day!";
-**
-** We can use this text in an SQL statement as follows:
-**
-** char *z = sqlite3_mprintf("INSERT INTO TABLES('%q')", zText);
-** sqlite3_exec(db, z, callback1, 0, 0);
-** sqlite3_free(z);
-**
-** Because the %q format string is used, the '\'' character in zText
-** is escaped and the SQL generated is as follows:
-**
-** INSERT INTO table1 VALUES('It''s a happy day!')
-**
-** This is correct. Had we used %s instead of %q, the generated SQL
-** would have looked like this:
-**
-** INSERT INTO table1 VALUES('It's a happy day!');
-**
-** This second example is an SQL syntax error. As a general rule you
-** should always use %q instead of %s when inserting text into a string
-** literal.
-*/
-char *sqlite3_mprintf(const char*,...);
-char *sqlite3_vmprintf(const char*, va_list);
-char *sqlite3_snprintf(int,char*,const char*, ...);
-
-/*
-** SQLite uses its own memory allocator. On many installations, this
-** memory allocator is identical to the standard malloc()/realloc()/free()
-** and can be used interchangable. On others, the implementations are
-** different. For maximum portability, it is best not to mix calls
-** to the standard malloc/realloc/free with the sqlite versions.
-*/
-void *sqlite3_malloc(int);
-void *sqlite3_realloc(void*, int);
-void sqlite3_free(void*);
-
-#ifndef SQLITE_OMIT_AUTHORIZATION
-/*
-** This routine registers a callback with the SQLite library. The
-** callback is invoked (at compile-time, not at run-time) for each
-** attempt to access a column of a table in the database. The callback
-** returns SQLITE_OK if access is allowed, SQLITE_DENY if the entire
-** SQL statement should ...
[truncated message content] |
|
From: <dav...@us...> - 2006-10-01 00:43:59
|
Revision: 1530
http://svn.sourceforge.net/frontierkernel/?rev=1530&view=rev
Author: davidgewirtz
Date: 2006-09-30 17:43:51 -0700 (Sat, 30 Sep 2006)
Log Message:
-----------
Updating sqlite-source-3.3.7 for rename to sqlite3
Added Paths:
-----------
Frontier/branches/SQLite/Common/sqlite3/
Removed Paths:
-------------
Frontier/branches/SQLite/Common/sqlite-source-3.3.7/
Copied: Frontier/branches/SQLite/Common/sqlite3 (from rev 1528, Frontier/branches/SQLite/Common/sqlite-source-3.3.7)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-01 00:42:29
|
Revision: 1529
http://svn.sourceforge.net/frontierkernel/?rev=1529&view=rev
Author: davidgewirtz
Date: 2006-09-30 17:42:26 -0700 (Sat, 30 Sep 2006)
Log Message:
-----------
Deleting old code, making room for new vendor drop to be moved in.
Removed Paths:
-------------
Frontier/branches/SQLite/Common/sqlite3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-01 00:32:35
|
Revision: 1528
http://svn.sourceforge.net/frontierkernel/?rev=1528&view=rev
Author: davidgewirtz
Date: 2006-09-30 17:32:28 -0700 (Sat, 30 Sep 2006)
Log Message:
-----------
bringing SQLite-3.3.7 vendor drop into SQLite branch
Added Paths:
-----------
Frontier/branches/SQLite/Common/sqlite-source-3.3.7/
Copied: Frontier/branches/SQLite/Common/sqlite-source-3.3.7 (from rev 1527, Frontier/vendor/sqlite3/sqlite-source-3.3.7)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-01 00:23:18
|
Revision: 1527
http://svn.sourceforge.net/frontierkernel/?rev=1527&view=rev
Author: davidgewirtz
Date: 2006-09-30 17:23:15 -0700 (Sat, 30 Sep 2006)
Log Message:
-----------
Fixing move from vendor drop. This may take me a few tries.
Removed Paths:
-------------
Frontier/branches/SQLite/Common/sqlite3/sqlite-source-3.3.7/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-01 00:19:07
|
Revision: 1526
http://svn.sourceforge.net/frontierkernel/?rev=1526&view=rev
Author: davidgewirtz
Date: 2006-09-30 17:19:00 -0700 (Sat, 30 Sep 2006)
Log Message:
-----------
Modified Paths:
--------------
Frontier/branches/SQLite/build_VC2K5/Frontier.sln
Modified: Frontier/branches/SQLite/build_VC2K5/Frontier.sln
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-10-01 00:17:55
|
Revision: 1525
http://svn.sourceforge.net/frontierkernel/?rev=1525&view=rev
Author: davidgewirtz
Date: 2006-09-30 17:17:44 -0700 (Sat, 30 Sep 2006)
Log Message:
-----------
bringing SQLite-3.3.7 vendor drop into SQLite branch
Added Paths:
-----------
Frontier/branches/SQLite/Common/sqlite3/sqlite-source-3.3.7/
Copied: Frontier/branches/SQLite/Common/sqlite3/sqlite-source-3.3.7 (from rev 1524, Frontier/vendor/sqlite3/sqlite-source-3.3.7)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-23 18:26:52
|
Revision: 1524
http://svn.sourceforge.net/frontierkernel/?rev=1524&view=rev
Author: creecode
Date: 2006-09-23 11:26:48 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
Tagging sqlite-source-3.3.7
Added Paths:
-----------
Frontier/vendor/sqlite3/sqlite-source-3.3.7/
Copied: Frontier/vendor/sqlite3/sqlite-source-3.3.7 (from rev 1523, Frontier/vendor/sqlite3/current)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-23 18:21:07
|
Revision: 1523
http://svn.sourceforge.net/frontierkernel/?rev=1523&view=rev
Author: creecode
Date: 2006-09-23 11:20:39 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
Importing SQLite v3.3.7 vendor drop
Modified Paths:
--------------
Frontier/vendor/sqlite3/current/alter.c
Frontier/vendor/sqlite3/current/attach.c
Frontier/vendor/sqlite3/current/auth.c
Frontier/vendor/sqlite3/current/btree.c
Frontier/vendor/sqlite3/current/btree.h
Frontier/vendor/sqlite3/current/build.c
Frontier/vendor/sqlite3/current/callback.c
Frontier/vendor/sqlite3/current/delete.c
Frontier/vendor/sqlite3/current/expr.c
Frontier/vendor/sqlite3/current/func.c
Frontier/vendor/sqlite3/current/hash.c
Frontier/vendor/sqlite3/current/hash.h
Frontier/vendor/sqlite3/current/insert.c
Frontier/vendor/sqlite3/current/legacy.c
Frontier/vendor/sqlite3/current/main.c
Frontier/vendor/sqlite3/current/os.h
Frontier/vendor/sqlite3/current/os_unix.c
Frontier/vendor/sqlite3/current/os_win.c
Frontier/vendor/sqlite3/current/pager.c
Frontier/vendor/sqlite3/current/pager.h
Frontier/vendor/sqlite3/current/pragma.c
Frontier/vendor/sqlite3/current/prepare.c
Frontier/vendor/sqlite3/current/printf.c
Frontier/vendor/sqlite3/current/select.c
Frontier/vendor/sqlite3/current/shell.c
Frontier/vendor/sqlite3/current/sqliteInt.h
Frontier/vendor/sqlite3/current/table.c
Frontier/vendor/sqlite3/current/tclsqlite.c
Frontier/vendor/sqlite3/current/tokenize.c
Frontier/vendor/sqlite3/current/trigger.c
Frontier/vendor/sqlite3/current/update.c
Frontier/vendor/sqlite3/current/utf.c
Frontier/vendor/sqlite3/current/util.c
Frontier/vendor/sqlite3/current/vacuum.c
Frontier/vendor/sqlite3/current/vdbe.c
Frontier/vendor/sqlite3/current/vdbe.h
Frontier/vendor/sqlite3/current/vdbeInt.h
Frontier/vendor/sqlite3/current/vdbeapi.c
Frontier/vendor/sqlite3/current/vdbeaux.c
Frontier/vendor/sqlite3/current/vdbemem.c
Frontier/vendor/sqlite3/current/where.c
Added Paths:
-----------
Frontier/vendor/sqlite3/current/loadext.c
Frontier/vendor/sqlite3/current/os_os2.c
Frontier/vendor/sqlite3/current/os_os2.h
Frontier/vendor/sqlite3/current/parse.y
Frontier/vendor/sqlite3/current/sqlite.h.in
Frontier/vendor/sqlite3/current/sqlite3ext.h
Frontier/vendor/sqlite3/current/test1.c
Frontier/vendor/sqlite3/current/test2.c
Frontier/vendor/sqlite3/current/test3.c
Frontier/vendor/sqlite3/current/test4.c
Frontier/vendor/sqlite3/current/test5.c
Frontier/vendor/sqlite3/current/test6.c
Frontier/vendor/sqlite3/current/test7.c
Frontier/vendor/sqlite3/current/test8.c
Frontier/vendor/sqlite3/current/test_async.c
Frontier/vendor/sqlite3/current/test_loadext.c
Frontier/vendor/sqlite3/current/test_md5.c
Frontier/vendor/sqlite3/current/test_schema.c
Frontier/vendor/sqlite3/current/test_server.c
Frontier/vendor/sqlite3/current/test_tclvar.c
Frontier/vendor/sqlite3/current/vtab.c
Modified: Frontier/vendor/sqlite3/current/alter.c
===================================================================
--- Frontier/vendor/sqlite3/current/alter.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/alter.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -12,7 +12,7 @@
** This file contains C code routines that used to generate VDBE code
** that implements the ALTER TABLE command.
**
-** $Id: alter.c,v 1.20 2006/02/09 02:56:03 drh Exp $
+** $Id: alter.c,v 1.21 2006/06/21 12:36:25 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -272,6 +272,12 @@
pTab = sqlite3LocateTable(pParse, pSrc->a[0].zName, pSrc->a[0].zDatabase);
if( !pTab ) goto exit_rename_table;
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ sqlite3ErrorMsg(pParse, "virtual tables may not be altered");
+ goto exit_rename_table;
+ }
+#endif
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
zDb = db->aDb[iDb].zName;
@@ -512,6 +518,13 @@
pTab = sqlite3LocateTable(pParse, pSrc->a[0].zName, pSrc->a[0].zDatabase);
if( !pTab ) goto exit_begin_add_column;
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ sqlite3ErrorMsg(pParse, "virtual tables may not be altered");
+ goto exit_begin_add_column;
+ }
+#endif
+
/* Make sure this is not an attempt to ALTER a view. */
if( pTab->pSelect ){
sqlite3ErrorMsg(pParse, "Cannot add a column to a view");
Modified: Frontier/vendor/sqlite3/current/attach.c
===================================================================
--- Frontier/vendor/sqlite3/current/attach.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/attach.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -11,7 +11,7 @@
*************************************************************************
** This file contains code used to implement the ATTACH and DETACH commands.
**
-** $Id: attach.c,v 1.49 2006/01/24 12:09:18 danielk1977 Exp $
+** $Id: attach.c,v 1.53 2006/06/27 16:34:57 danielk1977 Exp $
*/
#include "sqliteInt.h"
@@ -73,6 +73,8 @@
zFile = (const char *)sqlite3_value_text(argv[0]);
zName = (const char *)sqlite3_value_text(argv[1]);
+ if( zFile==0 ) zFile = "";
+ if( zName==0 ) zName = "";
/* Check for the following errors:
**
@@ -82,7 +84,7 @@
*/
if( db->nDb>=MAX_ATTACHED+2 ){
sqlite3_snprintf(
- 127, zErr, "too many attached databases - max %d", MAX_ATTACHED
+ sizeof(zErr), zErr, "too many attached databases - max %d", MAX_ATTACHED
);
goto attach_error;
}
@@ -92,8 +94,8 @@
}
for(i=0; i<db->nDb; i++){
char *z = db->aDb[i].zName;
- if( z && sqlite3StrICmp(z, zName)==0 ){
- sqlite3_snprintf(127, zErr, "database %s is already in use", zName);
+ if( z && zName && sqlite3StrICmp(z, zName)==0 ){
+ sqlite3_snprintf(sizeof(zErr), zErr, "database %s is already in use", zName);
goto attach_error;
}
}
@@ -185,7 +187,12 @@
}
sqlite3ResetInternalSchema(db, 0);
db->nDb = iDb;
- sqlite3_snprintf(127, zErr, "unable to open database: %s", zFile);
+ if( rc==SQLITE_NOMEM ){
+ if( !sqlite3MallocFailed() ) sqlite3FailedMalloc();
+ sqlite3_snprintf(sizeof(zErr),zErr, "out of memory");
+ }else{
+ sqlite3_snprintf(sizeof(zErr),zErr, "unable to open database: %s", zFile);
+ }
goto attach_error;
}
@@ -221,7 +228,7 @@
Db *pDb = 0;
char zErr[128];
- assert(zName);
+ if( zName==0 ) zName = "";
for(i=0; i<db->nDb; i++){
pDb = &db->aDb[i];
if( pDb->pBt==0 ) continue;
@@ -229,17 +236,21 @@
}
if( i>=db->nDb ){
- sqlite3_snprintf(sizeof(zErr), zErr, "no such database: %s", zName);
+ sqlite3_snprintf(sizeof(zErr),zErr, "no such database: %s", zName);
goto detach_error;
}
if( i<2 ){
- sqlite3_snprintf(sizeof(zErr), zErr, "cannot detach database %s", zName);
+ sqlite3_snprintf(sizeof(zErr),zErr, "cannot detach database %s", zName);
goto detach_error;
}
if( !db->autoCommit ){
strcpy(zErr, "cannot DETACH database within transaction");
goto detach_error;
}
+ if( sqlite3BtreeIsInReadTrans(pDb->pBt) ){
+ sqlite3_snprintf(sizeof(zErr),zErr, "database %s is locked", zName);
+ goto detach_error;
+ }
sqlite3BtreeClose(pDb->pBt);
pDb->pBt = 0;
Modified: Frontier/vendor/sqlite3/current/auth.c
===================================================================
--- Frontier/vendor/sqlite3/current/auth.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/auth.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -14,7 +14,7 @@
** systems that do not need this facility may omit it by recompiling
** the library with -DSQLITE_OMIT_AUTHORIZATION=1
**
-** $Id: auth.c,v 1.24 2006/01/13 13:55:45 drh Exp $
+** $Id: auth.c,v 1.25 2006/06/16 08:01:03 danielk1977 Exp $
*/
#include "sqliteInt.h"
@@ -182,8 +182,10 @@
sqlite3 *db = pParse->db;
int rc;
- /* Don't do any authorization checks if the database is initialising. */
- if( db->init.busy ){
+ /* Don't do any authorization checks if the database is initialising
+ ** or if the parser is being invoked from within sqlite3_declare_vtab.
+ */
+ if( db->init.busy || IN_DECLARE_VTAB ){
return SQLITE_OK;
}
Modified: Frontier/vendor/sqlite3/current/btree.c
===================================================================
--- Frontier/vendor/sqlite3/current/btree.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/btree.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -9,7 +9,7 @@
** May you share freely, never taking more than you give.
**
*************************************************************************
-** $Id: btree.c,v 1.314 2006/02/11 01:25:51 drh Exp $
+** $Id: btree.c,v 1.326 2006/08/08 13:51:43 drh Exp $
**
** This file implements a external (disk-based) database using BTrees.
** For a detailed discussion of BTrees, refer to
@@ -388,8 +388,8 @@
u8 wrFlag; /* True if writable */
u8 eState; /* One of the CURSOR_XXX constants (see below) */
#ifndef SQLITE_OMIT_SHARED_CACHE
- void *pKey;
- i64 nKey;
+ void *pKey; /* Saved key that was cursor's last known position */
+ i64 nKey; /* Size of pKey, or last integer key */
int skip; /* (skip<0) -> Prev() is a no-op. (skip>0) -> Next() is */
#endif
};
@@ -426,10 +426,10 @@
#if SQLITE_TEST
# define TRACE(X) if( sqlite3_btree_trace )\
{ sqlite3DebugPrintf X; fflush(stdout); }
+int sqlite3_btree_trace=0; /* True to enable tracing */
#else
# define TRACE(X)
#endif
-int sqlite3_btree_trace=0; /* True to enable tracing */
/*
** Forward declaration
@@ -469,8 +469,15 @@
/* The database page the PENDING_BYTE occupies. This page is never used.
** TODO: This macro is very similary to PAGER_MJ_PGNO() in pager.c. They
** should possibly be consolidated (presumably in pager.h).
+**
+** If disk I/O is omitted (meaning that the database is stored purely
+** in memory) then there is no pending byte.
*/
-#define PENDING_BYTE_PAGE(pBt) ((PENDING_BYTE/(pBt)->pageSize)+1)
+#ifdef SQLITE_OMIT_DISKIO
+# define PENDING_BYTE_PAGE(pBt) 0x7fffffff
+#else
+# define PENDING_BYTE_PAGE(pBt) ((PENDING_BYTE/(pBt)->pageSize)+1)
+#endif
/*
** A linked list of the following structures is stored at BtShared.pLock.
@@ -867,7 +874,8 @@
}
offset = PTRMAP_PTROFFSET(pBt, key);
- if( pEType ) *pEType = pPtrmap[offset];
+ assert( pEType!=0 );
+ *pEType = pPtrmap[offset];
if( pPgno ) *pPgno = get4byte(&pPtrmap[offset+1]);
sqlite3pager_unref(pPtrmap);
@@ -1273,6 +1281,12 @@
assert( (start + size)<=pPage->pBt->usableSize );
if( size<4 ) size = 4;
+#ifdef SQLITE_SECURE_DELETE
+ /* Overwrite deleted information with zeros when the SECURE_DELETE
+ ** option is enabled at compile-time */
+ memset(&data[start], 0, size);
+#endif
+
/* Add the space back into the linked list of freeblocks */
hdr = pPage->hdrOffset;
addr = hdr + 1;
@@ -1618,8 +1632,8 @@
** the right size. This is to guard against size changes that result
** when compiling on a different architecture.
*/
- assert( sizeof(i64)==8 );
- assert( sizeof(u64)==8 );
+ assert( sizeof(i64)==8 || sizeof(i64)==4 );
+ assert( sizeof(u64)==8 || sizeof(u64)==4 );
assert( sizeof(u32)==4 );
assert( sizeof(u16)==2 );
assert( sizeof(Pgno)==4 );
@@ -1679,7 +1693,7 @@
assert( (pBt->pageSize & 7)==0 ); /* 8-byte alignment of pageSize */
sqlite3pager_set_pagesize(pBt->pPager, pBt->pageSize);
-#ifndef SQLITE_OMIT_SHARED_CACHE
+#if !defined(SQLITE_OMIT_SHARED_CACHE) && !defined(SQLITE_OMIT_DISKIO)
/* Add the new btree to the linked list starting at ThreadData.pBtree.
** There is no chance that a malloc() may fail inside of the
** sqlite3ThreadData() call, as the ThreadData structure must have already
@@ -1744,7 +1758,7 @@
pTsd->pBtree = pBt->pNext;
}else{
BtShared *pPrev;
- for(pPrev=pTsd->pBtree; pPrev && pPrev->pNext!=pBt; pPrev=pPrev->pNext);
+ for(pPrev=pTsd->pBtree; pPrev && pPrev->pNext!=pBt; pPrev=pPrev->pNext){}
if( pPrev ){
assert( pTsd==sqlite3ThreadData() );
pPrev->pNext = pBt->pNext;
@@ -2353,7 +2367,7 @@
MemPage *pFreeMemPage = 0; /* "" */
#ifndef NDEBUG
- int nRef = *sqlite3pager_stats(pPager);
+ int nRef = sqlite3pager_refcount(pPager);
#endif
assert( pBt->autoVacuum );
@@ -2457,12 +2471,11 @@
if( rc!=SQLITE_OK ) goto autovacuum_out;
put4byte(&pBt->pPage1->aData[32], 0);
put4byte(&pBt->pPage1->aData[36], 0);
- if( rc!=SQLITE_OK ) goto autovacuum_out;
*nTrunc = finSize;
assert( finSize!=PENDING_BYTE_PAGE(pBt) );
autovacuum_out:
- assert( nRef==*sqlite3pager_stats(pPager) );
+ assert( nRef==sqlite3pager_refcount(pPager) );
if( rc!=SQLITE_OK ){
sqlite3pager_rollback(pPager);
}
@@ -3879,6 +3892,15 @@
n = get4byte(&pPage1->aData[36]);
put4byte(&pPage1->aData[36], n+1);
+#ifdef SQLITE_SECURE_DELETE
+ /* If the SQLITE_SECURE_DELETE compile-time option is enabled, then
+ ** always fully overwrite deleted information with zeros.
+ */
+ rc = sqlite3pager_write(pPage->aData);
+ if( rc ) return rc;
+ memset(pPage->aData, 0, pPage->pBt->pageSize);
+#endif
+
#ifndef SQLITE_OMIT_AUTOVACUUM
/* If the database supports auto-vacuum, write an entry in the pointer-map
** to indicate that the page is free.
@@ -3919,7 +3941,9 @@
if( rc ) return rc;
put4byte(&pTrunk->aData[4], k+1);
put4byte(&pTrunk->aData[8+k*4], pPage->pgno);
+#ifndef SQLITE_SECURE_DELETE
sqlite3pager_dont_write(pBt->pPager, pPage->pgno);
+#endif
TRACE(("FREE-PAGE: %d leaf on trunk page %d\n",pPage->pgno,pTrunk->pgno));
}
releasePage(pTrunk);
@@ -4052,6 +4076,7 @@
n = nPayload;
if( n>spaceLeft ) n = spaceLeft;
if( n>nSrc ) n = nSrc;
+ assert( pSrc );
memcpy(pPayload, pSrc, n);
nPayload -= n;
pPayload += n;
@@ -4076,6 +4101,7 @@
MemPage *pThis;
unsigned char *aData;
+ assert( pNewParent!=0 );
if( pgno==0 ) return SQLITE_OK;
assert( pBt->pPager!=0 );
aData = sqlite3pager_lookup(pBt->pPager, pgno);
@@ -4086,7 +4112,7 @@
if( pThis->pParent!=pNewParent ){
if( pThis->pParent ) sqlite3pager_unref(pThis->pParent->aData);
pThis->pParent = pNewParent;
- if( pNewParent ) sqlite3pager_ref(pNewParent->aData);
+ sqlite3pager_ref(pNewParent->aData);
}
pThis->idxParent = idx;
}
@@ -4799,6 +4825,7 @@
rc = sqlite3pager_write(pNew->aData);
if( rc ) goto balance_cleanup;
}else{
+ assert( i>0 );
rc = allocatePage(pBt, &pNew, &pgnoNew[i], pgnoNew[i-1], 0);
if( rc ) goto balance_cleanup;
apNew[i] = pNew;
@@ -4950,6 +4977,8 @@
}
}
assert( j==nCell );
+ assert( nOld>0 );
+ assert( nNew>0 );
if( (pageFlags & PTF_LEAF)==0 ){
memcpy(&apNew[nNew-1]->aData[8], &apCopy[nOld-1]->aData[8], 4);
}
@@ -6204,11 +6233,7 @@
IntegrityCk *pCheck, /* Context for the sanity check */
int iPage, /* Page number of the page to check */
MemPage *pParent, /* Parent page */
- char *zParentContext, /* Parent context */
- char *zLowerBound, /* All keys should be greater than this, if not NULL */
- int nLower, /* Number of characters in zLowerBound */
- char *zUpperBound, /* All keys should be less than this, if not NULL */
- int nUpper /* Number of characters in zUpperBound */
+ char *zParentContext /* Parent context */
){
MemPage *pPage;
int i, rc, depth, d2, pgno, cnt;
@@ -6274,7 +6299,7 @@
checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage, zContext);
}
#endif
- d2 = checkTreePage(pCheck,pgno,pPage,zContext,0,0,0,0);
+ d2 = checkTreePage(pCheck,pgno,pPage,zContext);
if( i>0 && d2!=depth ){
checkAppendMsg(pCheck, zContext, "Child page depth differs");
}
@@ -6289,7 +6314,7 @@
checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage, 0);
}
#endif
- checkTreePage(pCheck, pgno, pPage, zContext,0,0,0,0);
+ checkTreePage(pCheck, pgno, pPage, zContext);
}
/* Check for complete coverage of the page
@@ -6363,7 +6388,7 @@
IntegrityCk sCheck;
BtShared *pBt = p->pBt;
- nRef = *sqlite3pager_stats(pBt->pPager);
+ nRef = sqlite3pager_refcount(pBt->pPager);
if( lockBtreeWithRetry(p)!=SQLITE_OK ){
return sqliteStrDup("Unable to acquire a read lock on the database");
}
@@ -6401,7 +6426,7 @@
checkPtrmap(&sCheck, aRoot[i], PTRMAP_ROOTPAGE, 0, 0);
}
#endif
- checkTreePage(&sCheck, aRoot[i], 0, "List of tree roots: ", 0,0,0,0);
+ checkTreePage(&sCheck, aRoot[i], 0, "List of tree roots: ");
}
/* Make sure every page in the file is referenced
@@ -6429,10 +6454,10 @@
/* Make sure this analysis did not leave any unref() pages
*/
unlockBtreeIfUnused(pBt);
- if( nRef != *sqlite3pager_stats(pBt->pPager) ){
+ if( nRef != sqlite3pager_refcount(pBt->pPager) ){
checkAppendMsg(&sCheck, 0,
"Outstanding page count goes from %d to %d during this analysis",
- nRef, *sqlite3pager_stats(pBt->pPager)
+ nRef, sqlite3pager_refcount(pBt->pPager)
);
}
@@ -6534,6 +6559,13 @@
}
/*
+** Return non-zero if a read (or write) transaction is active.
+*/
+int sqlite3BtreeIsInReadTrans(Btree *p){
+ return (p && (p->inTrans!=TRANS_NONE));
+}
+
+/*
** This call is a no-op if no write-transaction is currently active on pBt.
**
** Otherwise, sync the database file for the btree pBt. zMaster points to
@@ -6598,17 +6630,23 @@
return (queryTableLock(p, MASTER_ROOT, READ_LOCK)!=SQLITE_OK);
}
+
+#ifndef SQLITE_OMIT_SHARED_CACHE
+/*
+** Obtain a lock on the table whose root page is iTab. The
+** lock is a write lock if isWritelock is true or a read lock
+** if it is false.
+*/
int sqlite3BtreeLockTable(Btree *p, int iTab, u8 isWriteLock){
int rc = SQLITE_OK;
-#ifndef SQLITE_OMIT_SHARED_CACHE
u8 lockType = (isWriteLock?WRITE_LOCK:READ_LOCK);
rc = queryTableLock(p, iTab, lockType);
if( rc==SQLITE_OK ){
rc = lockTable(p, iTab, lockType);
}
-#endif
return rc;
}
+#endif
/*
** The following debugging interface has to be in this file (rather
@@ -6623,6 +6661,7 @@
int objc,
Tcl_Obj *CONST objv[]
){
+#ifndef SQLITE_OMIT_SHARED_CACHE
const ThreadData *pTd = sqlite3ThreadDataReadOnly();
if( pTd->useSharedData ){
BtShared *pBt;
@@ -6634,6 +6673,7 @@
}
Tcl_SetObjResult(interp, pRet);
}
+#endif
return TCL_OK;
}
#endif
Modified: Frontier/vendor/sqlite3/current/btree.h
===================================================================
--- Frontier/vendor/sqlite3/current/btree.h 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/btree.h 2006-09-23 18:20:39 UTC (rev 1523)
@@ -13,7 +13,7 @@
** subsystem. See comments in the source code for a detailed description
** of what each interface routine does.
**
-** @(#) $Id: btree.h,v 1.70 2006/02/11 01:25:51 drh Exp $
+** @(#) $Id: btree.h,v 1.71 2006/06/27 16:34:57 danielk1977 Exp $
*/
#ifndef _BTREE_H_
#define _BTREE_H_
@@ -75,6 +75,7 @@
int sqlite3BtreeCreateTable(Btree*, int*, int flags);
int sqlite3BtreeIsInTrans(Btree*);
int sqlite3BtreeIsInStmt(Btree*);
+int sqlite3BtreeIsInReadTrans(Btree*);
int sqlite3BtreeSync(Btree*, const char *zMaster);
void *sqlite3BtreeSchema(Btree *, int, void(*)(void *));
int sqlite3BtreeSchemaLocked(Btree *);
Modified: Frontier/vendor/sqlite3/current/build.c
===================================================================
--- Frontier/vendor/sqlite3/current/build.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/build.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -22,7 +22,7 @@
** COMMIT
** ROLLBACK
**
-** $Id: build.c,v 1.386 2006/02/10 18:08:09 drh Exp $
+** $Id: build.c,v 1.409 2006/07/26 16:22:15 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -42,26 +42,28 @@
** codeTableLocks() functions.
*/
struct TableLock {
- int iDb;
- int iTab;
- u8 isWriteLock;
- const char *zName;
+ int iDb; /* The database containing the table to be locked */
+ int iTab; /* The root page of the table to be locked */
+ u8 isWriteLock; /* True for write lock. False for a read lock */
+ const char *zName; /* Name of the table */
};
/*
-** Have the compiled statement lock the table with rootpage iTab in database
-** iDb at the shared-cache level when executed. The isWriteLock argument
-** is zero for a read-lock, or non-zero for a write-lock.
+** Record the fact that we want to lock a table at run-time.
**
-** The zName parameter should point to the unqualified table name. This is
-** used to provide a more informative error message should the lock fail.
+** The table to be locked has root page iTab and is found in database iDb.
+** A read or a write lock can be taken depending on isWritelock.
+**
+** This routine just records the fact that the lock is desired. The
+** code to make the lock occur is generated by a later call to
+** codeTableLocks() which occurs during sqlite3FinishCoding().
*/
void sqlite3TableLock(
- Parse *pParse,
- int iDb,
- int iTab,
- u8 isWriteLock,
- const char *zName
+ Parse *pParse, /* Parsing context */
+ int iDb, /* Index of the database containing the table to lock */
+ int iTab, /* Root page number of the table to be locked */
+ u8 isWriteLock, /* True for a write lock */
+ const char *zName /* Name of the table to be locked */
){
int i;
int nBytes;
@@ -135,8 +137,8 @@
if( !pParse->pVdbe ){
if( pParse->rc==SQLITE_OK && pParse->nErr ){
pParse->rc = SQLITE_ERROR;
+ return;
}
- return;
}
/* Begin by generating some termination code at the end of the
@@ -162,6 +164,12 @@
sqlite3VdbeAddOp(v, OP_Transaction, iDb, (mask & pParse->writeMask)!=0);
sqlite3VdbeAddOp(v, OP_VerifyCookie, iDb, pParse->cookieValue[iDb]);
}
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( pParse->pVirtualLock ){
+ char *vtab = (char *)pParse->pVirtualLock->pVtab;
+ sqlite3VdbeOp3(v, OP_VBegin, 0, 0, vtab, P3_VTAB);
+ }
+#endif
/* Once all the cookies have been verified and transactions opened,
** obtain the required table-locks. This is a no-op unless the
@@ -185,7 +193,7 @@
/* Get the VDBE program ready for execution
*/
- if( v && pParse->nErr==0 ){
+ if( v && pParse->nErr==0 && !sqlite3MallocFailed() ){
FILE *trace = (db->flags & SQLITE_VdbeTrace)!=0 ? stdout : 0;
sqlite3VdbeTrace(v, trace);
sqlite3VdbeMakeReady(v, pParse->nVar, pParse->nMem+3,
@@ -338,7 +346,7 @@
** it is not unlinked from the Table that it indexes.
** Unlinking from the Table must be done by the calling function.
*/
-static void sqliteDeleteIndex(sqlite3 *db, Index *p){
+static void sqliteDeleteIndex(Index *p){
Index *pOld;
const char *zName = p->zName;
@@ -507,7 +515,7 @@
for(pIndex = pTable->pIndex; pIndex; pIndex=pNext){
pNext = pIndex->pNext;
assert( pIndex->pSchema==pTable->pSchema );
- sqliteDeleteIndex(db, pIndex);
+ sqliteDeleteIndex(pIndex);
}
#ifndef SQLITE_OMIT_FOREIGN_KEY
@@ -531,6 +539,7 @@
#ifndef SQLITE_OMIT_CHECK
sqlite3ExprDelete(pTable->pCheck);
#endif
+ sqlite3VtabClear(pTable);
sqliteFree(pTable);
}
@@ -690,8 +699,7 @@
** Begin constructing a new table representation in memory. This is
** the first of several action routines that get called in response
** to a CREATE TABLE statement. In particular, this routine is called
-** after seeing tokens "CREATE" and "TABLE" and the table name. The
-** pStart token is the CREATE and pName is the table name. The isTemp
+** after seeing tokens "CREATE" and "TABLE" and the table name. The isTemp
** flag is true if the table should be stored in the auxiliary database
** file instead of in the main database file. This is normally the case
** when the "TEMP" or "TEMPORARY" keyword occurs in between
@@ -705,11 +713,11 @@
*/
void sqlite3StartTable(
Parse *pParse, /* Parser context */
- Token *pStart, /* The "CREATE" token */
Token *pName1, /* First part of the name of the table or view */
Token *pName2, /* Second part of the name of the table or view */
int isTemp, /* True if this is a TEMP table */
int isView, /* True if this is a VIEW */
+ int isVirtual, /* True if this is a VIRTUAL table */
int noErr /* Do nothing if table already exists */
){
Table *pTable;
@@ -773,7 +781,7 @@
code = SQLITE_CREATE_TABLE;
}
}
- if( sqlite3AuthCheck(pParse, code, zName, 0, zDb) ){
+ if( !isVirtual && sqlite3AuthCheck(pParse, code, zName, 0, zDb) ){
goto begin_table_error;
}
}
@@ -781,22 +789,28 @@
/* Make sure the new table name does not collide with an existing
** index or table name in the same database. Issue an error message if
- ** it does.
+ ** it does. The exception is if the statement being parsed was passed
+ ** to an sqlite3_declare_vtab() call. In that case only the column names
+ ** and types will be used, so there is no need to test for namespace
+ ** collisions.
*/
- if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
- goto begin_table_error;
- }
- pTable = sqlite3FindTable(db, zName, db->aDb[iDb].zName);
- if( pTable ){
- if( !noErr ){
- sqlite3ErrorMsg(pParse, "table %T already exists", pName);
+ if( !IN_DECLARE_VTAB ){
+ if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
+ goto begin_table_error;
}
- goto begin_table_error;
+ pTable = sqlite3FindTable(db, zName, db->aDb[iDb].zName);
+ if( pTable ){
+ if( !noErr ){
+ sqlite3ErrorMsg(pParse, "table %T already exists", pName);
+ }
+ goto begin_table_error;
+ }
+ if( sqlite3FindIndex(db, zName, 0)!=0 && (iDb==0 || !db->init.busy) ){
+ sqlite3ErrorMsg(pParse, "there is already an index named %s", zName);
+ goto begin_table_error;
+ }
}
- if( sqlite3FindIndex(db, zName, 0)!=0 && (iDb==0 || !db->init.busy) ){
- sqlite3ErrorMsg(pParse, "there is already an index named %s", zName);
- goto begin_table_error;
- }
+
pTable = sqliteMalloc( sizeof(Table) );
if( pTable==0 ){
pParse->rc = SQLITE_NOMEM;
@@ -804,10 +818,7 @@
goto begin_table_error;
}
pTable->zName = zName;
- pTable->nCol = 0;
- pTable->aCol = 0;
pTable->iPKey = -1;
- pTable->pIndex = 0;
pTable->pSchema = db->aDb[iDb].pSchema;
pTable->nRef = 1;
if( pParse->pNewTable ) sqlite3DeleteTable(db, pParse->pNewTable);
@@ -836,6 +847,12 @@
int fileFormat;
sqlite3BeginWriteOperation(pParse, 0, iDb);
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( isVirtual ){
+ sqlite3VdbeAddOp(v, OP_VBegin, 0, 0);
+ }
+#endif
+
/* If the file format and encoding in the database have not been set,
** set them now.
*/
@@ -843,7 +860,7 @@
lbl = sqlite3VdbeMakeLabel(v);
sqlite3VdbeAddOp(v, OP_If, 0, lbl);
fileFormat = (db->flags & SQLITE_LegacyFileFmt)!=0 ?
- 1 : SQLITE_DEFAULT_FILE_FORMAT;
+ 1 : SQLITE_MAX_FILE_FORMAT;
sqlite3VdbeAddOp(v, OP_Integer, fileFormat, 0);
sqlite3VdbeAddOp(v, OP_SetCookie, iDb, 1);
sqlite3VdbeAddOp(v, OP_Integer, ENC(db), 0);
@@ -858,8 +875,8 @@
** The rowid value is needed by the code that sqlite3EndTable will
** generate.
*/
-#ifndef SQLITE_OMIT_VIEW
- if( isView ){
+#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
+ if( isView || isVirtual ){
sqlite3VdbeAddOp(v, OP_Integer, 0, 0);
}else
#endif
@@ -1095,7 +1112,7 @@
Table *pTab = pParse->pNewTable;
char *zType = 0;
int iCol = -1, i;
- if( pTab==0 ) goto primary_key_exit;
+ if( pTab==0 || IN_DECLARE_VTAB ) goto primary_key_exit;
if( pTab->hasPrimKey ){
sqlite3ErrorMsg(pParse,
"table \"%s\" has more than one primary key", pTab->zName);
@@ -1150,7 +1167,7 @@
){
#ifndef SQLITE_OMIT_CHECK
Table *pTab = pParse->pNewTable;
- if( pTab ){
+ if( pTab && !IN_DECLARE_VTAB ){
/* The CHECK expression must be duplicated so that tokens refer
** to malloced space and not the (ephemeral) text of the CREATE TABLE
** statement */
@@ -1372,7 +1389,7 @@
assert( !db->init.busy || !pSelect );
- iDb = sqlite3SchemaToIndex(pParse->db, p->pSchema);
+ iDb = sqlite3SchemaToIndex(db, p->pSchema);
#ifndef SQLITE_OMIT_CHECK
/* Resolve names in all CHECK constraint expressions.
@@ -1584,7 +1601,7 @@
sqlite3SelectDelete(pSelect);
return;
}
- sqlite3StartTable(pParse, pBegin, pName1, pName2, isTemp, 1, 0);
+ sqlite3StartTable(pParse, pName1, pName2, isTemp, 1, 0, 0);
p = pParse->pNewTable;
if( p==0 || pParse->nErr ){
sqlite3SelectDelete(pSelect);
@@ -1633,7 +1650,7 @@
}
#endif /* SQLITE_OMIT_VIEW */
-#ifndef SQLITE_OMIT_VIEW
+#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
/*
** The Table structure pTable is really a VIEW. Fill in the names of
** the columns of the view in the pTable structure. Return the number
@@ -1647,6 +1664,14 @@
assert( pTable );
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( sqlite3VtabCallConnect(pParse, pTable) ){
+ return SQLITE_ERROR;
+ }
+ if( IsVirtual(pTable) ) return 0;
+#endif
+
+#ifndef SQLITE_OMIT_VIEW
/* A positive nCol means the columns names for this view are
** already known.
*/
@@ -1699,9 +1724,10 @@
} else {
nErr++;
}
+#endif /* SQLITE_OMIT_VIEW */
return nErr;
}
-#endif /* SQLITE_OMIT_VIEW */
+#endif /* !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) */
#ifndef SQLITE_OMIT_VIEW
/*
@@ -1727,6 +1753,17 @@
** used by SQLite when the btree layer moves a table root page. The
** root-page of a table or index in database iDb has changed from iFrom
** to iTo.
+**
+** Ticket #1728: The symbol table might still contain information
+** on tables and/or indices that are the process of being deleted.
+** If you are unlucky, one of those deleted indices or tables might
+** have the same rootpage number as the real table or index that is
+** being moved. So we cannot stop searching after the first match
+** because the first match might be for one of the deleted indices
+** or tables and not the table/index that is actually being moved.
+** We must continue looping until all tables and indices with
+** rootpage==iFrom have been converted to have a rootpage of iTo
+** in order to be certain that we got the right one.
*/
#ifndef SQLITE_OMIT_AUTOVACUUM
void sqlite3RootPageMoved(Db *pDb, int iFrom, int iTo){
@@ -1738,7 +1775,6 @@
Table *pTab = sqliteHashData(pElem);
if( pTab->tnum==iFrom ){
pTab->tnum = iTo;
- return;
}
}
pHash = &pDb->pSchema->idxHash;
@@ -1746,10 +1782,8 @@
Index *pIdx = sqliteHashData(pElem);
if( pIdx->tnum==iFrom ){
pIdx->tnum = iTo;
- return;
}
}
- assert(0);
}
#endif
@@ -1865,6 +1899,7 @@
int code;
const char *zTab = SCHEMA_TABLE(iDb);
const char *zDb = db->aDb[iDb].zName;
+ const char *zArg2 = 0;
if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb)){
goto exit_drop_table;
}
@@ -1874,6 +1909,14 @@
}else{
code = SQLITE_DROP_VIEW;
}
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ }else if( IsVirtual(pTab) ){
+ if( sqlite3ViewGetColumnNames(pParse, pTab) ){
+ goto exit_drop_table;
+ }
+ code = SQLITE_DROP_VTABLE;
+ zArg2 = pTab->pMod->zName;
+#endif
}else{
if( !OMIT_TEMPDB && iDb==1 ){
code = SQLITE_DROP_TEMP_TABLE;
@@ -1881,7 +1924,7 @@
code = SQLITE_DROP_TABLE;
}
}
- if( sqlite3AuthCheck(pParse, code, pTab->zName, 0, zDb) ){
+ if( sqlite3AuthCheck(pParse, code, pTab->zName, zArg2, zDb) ){
goto exit_drop_table;
}
if( sqlite3AuthCheck(pParse, SQLITE_DELETE, pTab->zName, 0, zDb) ){
@@ -1917,6 +1960,15 @@
Db *pDb = &db->aDb[iDb];
sqlite3BeginWriteOperation(pParse, 0, iDb);
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ Vdbe *v = sqlite3GetVdbe(pParse);
+ if( v ){
+ sqlite3VdbeAddOp(v, OP_VBegin, 0, 0);
+ }
+ }
+#endif
+
/* Drop all triggers associated with the table being dropped. Code
** is generated to remove entries from sqlite_master and/or
** sqlite_temp_master if required.
@@ -1925,7 +1977,7 @@
while( pTrigger ){
assert( pTrigger->pSchema==pTab->pSchema ||
pTrigger->pSchema==db->aDb[1].pSchema );
- sqlite3DropTriggerPtr(pParse, pTrigger, 1);
+ sqlite3DropTriggerPtr(pParse, pTrigger);
pTrigger = pTrigger->pNext;
}
@@ -1953,13 +2005,16 @@
sqlite3NestedParse(pParse,
"DELETE FROM %Q.%s WHERE tbl_name=%Q and type!='trigger'",
pDb->zName, SCHEMA_TABLE(iDb), pTab->zName);
- if( !isView ){
+ if( !isView && !IsVirtual(pTab) ){
destroyTable(pParse, pTab);
}
/* Remove the table entry from SQLite's internal schema and modify
** the schema cookie.
*/
+ if( IsVirtual(pTab) ){
+ sqlite3VdbeOp3(v, OP_VDestroy, iDb, 0, pTab->zName, 0);
+ }
sqlite3VdbeOp3(v, OP_DropTable, iDb, 0, pTab->zName, 0);
sqlite3ChangeCookie(db, v, iDb);
}
@@ -2003,7 +2058,7 @@
char *z;
assert( pTo!=0 );
- if( p==0 || pParse->nErr ) goto fk_end;
+ if( p==0 || pParse->nErr || IN_DECLARE_VTAB ) goto fk_end;
if( pFromCol==0 ){
int iCol = p->nCol-1;
if( iCol<0 ) goto fk_end;
@@ -2207,7 +2262,7 @@
int nExtra = 0;
char *zExtra;
- if( pParse->nErr || sqlite3MallocFailed() ){
+ if( pParse->nErr || sqlite3MallocFailed() || IN_DECLARE_VTAB ){
goto exit_create_index;
}
@@ -2264,6 +2319,12 @@
goto exit_create_index;
}
#endif
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ sqlite3ErrorMsg(pParse, "virtual tables may not be indexed");
+ goto exit_create_index;
+ }
+#endif
/*
** Find the name of the index. Make sure there is not already another
@@ -2630,9 +2691,13 @@
int i;
assert( a!=0 );
a[0] = 1000000;
- for(i=pIdx->nColumn; i>=1; i--){
- a[i] = 10;
+ for(i=pIdx->nColumn; i>=5; i--){
+ a[i] = 5;
}
+ while( i>=1 ){
+ a[i] = 11 - i;
+ i--;
+ }
if( pIdx->onError!=OE_None ){
a[pIdx->nColumn] = 1;
}
@@ -2958,7 +3023,7 @@
** Make sure the TEMP database is open and available for use. Return
** the number of errors. Leave any error messages in the pParse structure.
*/
-static int sqlite3OpenTempDatabase(Parse *pParse){
+int sqlite3OpenTempDatabase(Parse *pParse){
sqlite3 *db = pParse->db;
if( db->aDb[1].pBt==0 && !pParse->explain ){
int rc = sqlite3BtreeFactory(db, 0, 0, MAX_PAGES, &db->aDb[1].pBt);
@@ -3018,7 +3083,7 @@
if( iDb>=0 ){
assert( iDb<db->nDb );
assert( db->aDb[iDb].pBt!=0 || iDb==1 );
- assert( iDb<32 );
+ assert( iDb<MAX_ATTACHED+2 );
mask = 1<<iDb;
if( (pParse->cookieMask & mask)==0 ){
pParse->cookieMask |= mask;
@@ -3110,7 +3175,7 @@
Table *pTab; /* A table in the database */
for(iDb=0, pDb=db->aDb; iDb<db->nDb; iDb++, pDb++){
- if( pDb==0 ) continue;
+ assert( pDb!=0 );
for(k=sqliteHashFirst(&pDb->pSchema->tblHash); k; k=sqliteHashNext(k)){
pTab = (Table*)sqliteHashData(k);
reindexTable(pParse, pTab, zColl);
Modified: Frontier/vendor/sqlite3/current/callback.c
===================================================================
--- Frontier/vendor/sqlite3/current/callback.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/callback.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -13,7 +13,7 @@
** This file contains functions used to access the internal hash tables
** of user defined functions and collation sequences.
**
-** $Id: callback.c,v 1.12 2006/01/18 16:51:35 danielk1977 Exp $
+** $Id: callback.c,v 1.15 2006/05/24 12:43:27 drh Exp $
*/
#include "sqliteInt.h"
@@ -178,9 +178,11 @@
** return the pColl pointer to be deleted (because it wasn't added
** to the hash table).
*/
- assert( !pDel ||
- (sqlite3MallocFailed() && pDel==pColl) );
- sqliteFree(pDel);
+ assert( !pDel || (sqlite3MallocFailed() && pDel==pColl) );
+ if( pDel ){
+ sqliteFree(pDel);
+ pColl = 0;
+ }
}
}
return pColl;
@@ -312,3 +314,55 @@
}
return 0;
}
+
+/*
+** Free all resources held by the schema structure. The void* argument points
+** at a Schema struct. This function does not call sqliteFree() on the
+** pointer itself, it just cleans up subsiduary resources (i.e. the contents
+** of the schema hash tables).
+*/
+void sqlite3SchemaFree(void *p){
+ Hash temp1;
+ Hash temp2;
+ HashElem *pElem;
+ Schema *pSchema = (Schema *)p;
+
+ temp1 = pSchema->tblHash;
+ temp2 = pSchema->trigHash;
+ sqlite3HashInit(&pSchema->trigHash, SQLITE_HASH_STRING, 0);
+ sqlite3HashClear(&pSchema->aFKey);
+ sqlite3HashClear(&pSchema->idxHash);
+ for(pElem=sqliteHashFirst(&temp2); pElem; pElem=sqliteHashNext(pElem)){
+ sqlite3DeleteTrigger((Trigger*)sqliteHashData(pElem));
+ }
+ sqlite3HashClear(&temp2);
+ sqlite3HashInit(&pSchema->tblHash, SQLITE_HASH_STRING, 0);
+ for(pElem=sqliteHashFirst(&temp1); pElem; pElem=sqliteHashNext(pElem)){
+ Table *pTab = sqliteHashData(pElem);
+ sqlite3DeleteTable(0, pTab);
+ }
+ sqlite3HashClear(&temp1);
+ pSchema->pSeqTab = 0;
+ pSchema->flags &= ~DB_SchemaLoaded;
+}
+
+/*
+** Find and return the schema associated with a BTree. Create
+** a new one if necessary.
+*/
+Schema *sqlite3SchemaGet(Btree *pBt){
+ Schema * p;
+ if( pBt ){
+ p = (Schema *)sqlite3BtreeSchema(pBt,sizeof(Schema),sqlite3SchemaFree);
+ }else{
+ p = (Schema *)sqliteMalloc(sizeof(Schema));
+ }
+ if( p && 0==p->file_format ){
+ sqlite3HashInit(&p->tblHash, SQLITE_HASH_STRING, 0);
+ sqlite3HashInit(&p->idxHash, SQLITE_HASH_STRING, 0);
+ sqlite3HashInit(&p->trigHash, SQLITE_HASH_STRING, 0);
+ sqlite3HashInit(&p->aFKey, SQLITE_HASH_STRING, 1);
+ p->enc = SQLITE_UTF8;
+ }
+ return p;
+}
Modified: Frontier/vendor/sqlite3/current/delete.c
===================================================================
--- Frontier/vendor/sqlite3/current/delete.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/delete.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** in order to generate code for DELETE FROM statements.
**
-** $Id: delete.c,v 1.121 2006/02/10 02:27:43 danielk1977 Exp $
+** $Id: delete.c,v 1.127 2006/06/19 03:05:10 danielk1977 Exp $
*/
#include "sqliteInt.h"
@@ -42,8 +42,12 @@
** writable return 0;
*/
int sqlite3IsReadOnly(Parse *pParse, Table *pTab, int viewOk){
- if( pTab->readOnly && (pParse->db->flags & SQLITE_WriteSchema)==0
- && pParse->nested==0 ){
+ if( (pTab->readOnly && (pParse->db->flags & SQLITE_WriteSchema)==0
+ && pParse->nested==0)
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ || (pTab->pMod && pTab->pMod->pModule->xUpdate==0)
+#endif
+ ){
sqlite3ErrorMsg(pParse, "table %s may not be modified", pTab->zName);
return 1;
}
@@ -66,7 +70,9 @@
Table *pTab, /* The table to be opened */
int opcode /* OP_OpenRead or OP_OpenWrite */
){
- Vdbe *v = sqlite3GetVdbe(p);
+ Vdbe *v;
+ if( IsVirtual(pTab) ) return;
+ v = sqlite3GetVdbe(p);
assert( opcode==OP_OpenWrite || opcode==OP_OpenRead );
sqlite3TableLock(p, iDb, pTab->tnum, (opcode==OP_OpenWrite), pTab->zName);
sqlite3VdbeAddOp(v, OP_Integer, iDb, 0);
@@ -149,7 +155,7 @@
/* If pTab is really a view, make sure it has been initialized.
*/
- if( isView && sqlite3ViewGetColumnNames(pParse, pTab) ){
+ if( sqlite3ViewGetColumnNames(pParse, pTab) ){
goto delete_from_cleanup;
}
@@ -190,7 +196,7 @@
*/
if( isView ){
Select *pView = sqlite3SelectDup(pTab->pSelect);
- sqlite3Select(pParse, pView, SRT_VirtualTab, iCur, 0, 0, 0, 0);
+ sqlite3Select(pParse, pView, SRT_EphemTab, iCur, 0, 0, 0, 0);
sqlite3SelectDelete(pView);
}
@@ -205,7 +211,7 @@
** It is easier just to erase the whole table. Note, however, that
** this means that the row change count will be incorrect.
*/
- if( pWhere==0 && !triggers_exist ){
+ if( pWhere==0 && !triggers_exist && !IsVirtual(pTab) ){
if( db->flags & SQLITE_CountRows ){
/* If counting rows deleted, just count the total number of
** entries in the table. */
@@ -230,8 +236,7 @@
sqlite3VdbeAddOp(v, OP_Clear, pIdx->tnum, iDb);
}
}
- }
-
+ }
/* The usual case: There is a WHERE clause so we have to scan through
** the table and pick which records to delete.
*/
@@ -243,7 +248,7 @@
/* Remember the rowid of every item to be deleted.
*/
- sqlite3VdbeAddOp(v, OP_Rowid, iCur, 0);
+ sqlite3VdbeAddOp(v, IsVirtual(pTab) ? OP_VRowid : OP_Rowid, iCur, 0);
sqlite3VdbeAddOp(v, OP_FifoWrite, 0, 0);
if( db->flags & SQLITE_CountRows ){
sqlite3VdbeAddOp(v, OP_AddImm, 1, 0);
@@ -304,7 +309,15 @@
}
/* Delete the row */
- sqlite3GenerateRowDelete(db, v, pTab, iCur, pParse->nested==0);
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ pParse->pVirtualLock = pTab;
+ sqlite3VdbeOp3(v, OP_VUpdate, 0, 1, (const char*)pTab->pVtab, P3_VTAB);
+ }else
+#endif
+ {
+ sqlite3GenerateRowDelete(db, v, pTab, iCur, pParse->nested==0);
+ }
}
/* If there are row triggers, close all cursors then invoke
@@ -327,7 +340,7 @@
sqlite3VdbeResolveLabel(v, end);
/* Close the cursors after the loop if there are no row triggers */
- if( !triggers_exist ){
+ if( !triggers_exist && !IsVirtual(pTab) ){
for(i=1, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
sqlite3VdbeAddOp(v, OP_Close, iCur + i, pIdx->tnum);
}
@@ -382,7 +395,7 @@
){
int addr;
addr = sqlite3VdbeAddOp(v, OP_NotExists, iCur, 0);
- sqlite3GenerateRowIndexDelete(db, v, pTab, iCur, 0);
+ sqlite3GenerateRowIndexDelete(v, pTab, iCur, 0);
sqlite3VdbeAddOp(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0));
if( count ){
sqlite3VdbeChangeP3(v, -1, pTab->zName, P3_STATIC);
@@ -407,7 +420,6 @@
** deleted.
*/
void sqlite3GenerateRowIndexDelete(
- sqlite3 *db, /* The database containing the index */
Vdbe *v, /* Generate code into this VDBE */
Table *pTab, /* Table containing the row to be deleted */
int iCur, /* Cursor number for the table */
Modified: Frontier/vendor/sqlite3/current/expr.c
===================================================================
--- Frontier/vendor/sqlite3/current/expr.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/expr.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -12,7 +12,7 @@
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
-** $Id: expr.c,v 1.254 2006/02/10 07:07:15 danielk1977 Exp $
+** $Id: expr.c,v 1.266 2006/07/11 13:15:08 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -212,6 +212,19 @@
}
/*
+** Works like sqlite3Expr() but frees its pLeft and pRight arguments
+** if it fails due to a malloc problem.
+*/
+Expr *sqlite3ExprOrFree(int op, Expr *pLeft, Expr *pRight, const Token *pToken){
+ Expr *pNew = sqlite3Expr(op, pLeft, pRight, pToken);
+ if( pNew==0 ){
+ sqlite3ExprDelete(pLeft);
+ sqlite3ExprDelete(pRight);
+ }
+ return pNew;
+}
+
+/*
** When doing a nested parse, you can include terms in an expression
** that look like this: #0 #1 #2 ... These terms refer to elements
** on the stack. "#0" means the top of the stack.
@@ -547,12 +560,12 @@
pNew->iOffset = -1;
pNew->isResolved = p->isResolved;
pNew->isAgg = p->isAgg;
- pNew->usesVirt = 0;
+ pNew->usesEphm = 0;
pNew->disallowOrderBy = 0;
pNew->pRightmost = 0;
- pNew->addrOpenVirt[0] = -1;
- pNew->addrOpenVirt[1] = -1;
- pNew->addrOpenVirt[2] = -1;
+ pNew->addrOpenEphm[0] = -1;
+ pNew->addrOpenEphm[1] = -1;
+ pNew->addrOpenEphm[2] = -1;
return pNew;
}
#else
@@ -841,11 +854,13 @@
if( pSrcList ){
for(i=0, pItem=pSrcList->a; i<pSrcList->nSrc; i++, pItem++){
- Table *pTab = pItem->pTab;
- int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
+ Table *pTab;
+ int iDb;
Column *pCol;
- if( pTab==0 ) continue;
+ pTab = pItem->pTab;
+ assert( pTab!=0 );
+ iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
assert( pTab->nCol>0 );
if( zTab ){
if( pItem->zAlias ){
@@ -1314,7 +1329,7 @@
case TK_IN: {
char affinity;
KeyInfo keyInfo;
- int addr; /* Address of OP_OpenVirtual instruction */
+ int addr; /* Address of OP_OpenEphemeral instruction */
affinity = sqlite3ExprAffinity(pExpr->pLeft);
@@ -1332,7 +1347,7 @@
** is used.
*/
pExpr->iTable = pParse->nTab++;
- addr = sqlite3VdbeAddOp(v, OP_OpenVirtual, pExpr->iTable, 0);
+ addr = sqlite3VdbeAddOp(v, OP_OpenEphemeral, pExpr->iTable, 0);
memset(&keyInfo, 0, sizeof(keyInfo));
keyInfo.nField = 1;
sqlite3VdbeAddOp(v, OP_SetNumColumns, pExpr->iTable, 1);
@@ -1365,7 +1380,7 @@
struct ExprList_item *pItem;
if( !affinity ){
- affinity = SQLITE_AFF_NUMERIC;
+ affinity = SQLITE_AFF_NONE;
}
keyInfo.aColl[0] = pExpr->pLeft->pColl;
@@ -1379,11 +1394,7 @@
** expression we need to rerun this code each time.
*/
if( testAddr>0 && !sqlite3ExprIsConstant(pE2) ){
- VdbeOp *aOp = sqlite3VdbeGetOp(v, testAddr-1);
- int j;
- for(j=0; j<3; j++){
- aOp[j].opcode = OP_Noop;
- }
+ sqlite3VdbeChangeToNoop(v, testAddr-1, 3);
testAddr = 0;
}
@@ -1491,7 +1502,8 @@
}else if( pExpr->iColumn>=0 ){
Table *pTab = pExpr->pTab;
int iCol = pExpr->iColumn;
- sqlite3VdbeAddOp(v, OP_Column, pExpr->iTable, iCol);
+ int op = (pTab && IsVirtual(pTab)) ? OP_VColumn : OP_Column;
+ sqlite3VdbeAddOp(v, op, pExpr->iTable, iCol);
sqlite3ColumnDefault(v, pTab, iCol);
#ifndef SQLITE_OMIT_FLOATING_POINT
if( pTab && pTab->aCol[iCol].affinity==SQLITE_AFF_REAL ){
@@ -1499,7 +1511,9 @@
}
#endif
}else{
- sqlite3VdbeAddOp(v, OP_Rowid, pExpr->iTable, 0);
+ Table *pTab = pExpr->pTab;
+ int op = (pTab && IsVirtual(pTab)) ? OP_VRowid : OP_Rowid;
+ sqlite3VdbeAddOp(v, op, pExpr->iTable, 0);
}
break;
}
@@ -1673,6 +1687,25 @@
pDef = sqlite3FindFunction(pParse->db, zId, nId, nExpr, enc, 0);
assert( pDef!=0 );
nExpr = sqlite3ExprCodeExprList(pParse, pList);
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ /* Possibly overload the function if the first argument is
+ ** a virtual table column.
+ **
+ ** For infix functions (LIKE, GLOB, REGEXP, and MATCH) use the
+ ** second argument, not the first, as the argument to test to
+ ** see if it is a column in a virtual table. This is done because
+ ** the left operand of infix functions (the operand we want to
+ ** control overloading) ends up as the second argument to the
+ ** function. The expression "A glob B" is equivalent to
+ ** "glob(B,A). We want to use the A in "A glob B" to test
+ ** for function overloading. But we use the B term in "glob(B,A)".
+ */
+ if( nExpr>=2 && (pExpr->flags & EP_InfixFunc) ){
+ pDef = sqlite3VtabOverloadFunction(pDef, nExpr, pList->a[1].pExpr);
+ }else if( nExpr>0 ){
+ pDef = sqlite3VtabOverloadFunction(pDef, nExpr, pList->a[0].pExpr);
+ }
+#endif
for(i=0; i<nExpr && i<32; i++){
if( sqlite3ExprIsConstant(pList->a[i].pExpr) ){
constMask |= (1<<i);
@@ -1692,7 +1725,9 @@
#ifndef SQLITE_OMIT_SUBQUERY
case TK_EXISTS:
case TK_SELECT: {
- sqlite3CodeSubselect(pParse, pExpr);
+ if( pExpr->iColumn==0 ){
+ sqlite3CodeSubselect(pParse, pExpr);
+ }
sqlite3VdbeAddOp(v, OP_MemLoad, pExpr->iColumn, 0);
VdbeComment((v, "# load subquery result"));
break;
Modified: Frontier/vendor/sqlite3/current/func.c
===================================================================
--- Frontier/vendor/sqlite3/current/func.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/func.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -16,7 +16,7 @@
** sqliteRegisterBuildinFunctions() found at the bottom of the file.
** All other code has file scope.
**
-** $Id: func.c,v 1.121 2006/02/09 22:13:42 drh Exp $
+** $Id: func.c,v 1.132 2006/06/24 11:51:33 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -121,7 +121,13 @@
switch( sqlite3_value_type(argv[0]) ){
case SQLITE_INTEGER: {
i64 iVal = sqlite3_value_int64(argv[0]);
- if( iVal<0 ) iVal = iVal * -1;
+ if( iVal<0 ){
+ if( (iVal<<1)==0 ){
+ sqlite3_result_error(context, "integer overflow", -1);
+ return;
+ }
+ iVal = -iVal;
+ }
sqlite3_result_int64(context, iVal);
break;
}
@@ -131,7 +137,7 @@
}
default: {
double rVal = sqlite3_value_double(argv[0]);
- if( rVal<0 ) rVal = rVal * -1.0;
+ if( rVal<0 ) rVal = -rVal;
sqlite3_result_double(context, rVal);
break;
}
@@ -195,10 +201,11 @@
if( n>30 ) n = 30;
if( n<0 ) n = 0;
}
- if( SQLITE_NULL==sqlite3_value_type(argv[0]) ) return;
+ if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
r = sqlite3_value_double(argv[0]);
sqlite3_snprintf(sizeof(zBuf),zBuf,"%.*f",n,r);
- sqlite3_result_text(context, zBuf, -1, SQLITE_TRANSIENT);
+ sqlite3AtoF(zBuf, &r);
+ sqlite3_result_double(context, r);
}
/*
@@ -258,9 +265,11 @@
int argc,
sqlite3_value **argv
){
- int r;
+ sqlite_int64 r;
sqlite3Randomness(sizeof(r), &r);
- sqlite3_result_int(context, r);
+ if( (r<<1)==0 ) r = 0; /* Prevent 0x8000.... as the result so that we */
+ /* can always do abs() of the result */
+ sqlite3_result_int64(context, r);
}
/*
@@ -539,7 +548,20 @@
sqlite3_result_text(context, sqlite3_version, -1, SQLITE_STATIC);
}
+/*
+** The MATCH() function is unimplemented. If anybody tries to use it,
+** return an error.
+*/
+static void matchStub(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ static const char zErr[] = "MATCH is not implemented";
+ sqlite3_result_error(context, zErr, sizeof(zErr)-1);
+}
+
/*
** EXPERIMENTAL - This is not an official function. The interface may
** change. This function may disappear. Do not write code that depends
@@ -633,6 +655,7 @@
};
assert( argc==1 );
zIn = (u8*)sqlite3_value_text(argv[0]);
+ if( zIn==0 ) zIn = "";
for(i=0; zIn[i] && !isalpha(zIn[i]); i++){}
if( zIn[i] ){
zResult[0] = toupper(zIn[i]);
@@ -653,6 +676,26 @@
}
#endif
+#ifndef SQLITE_OMIT_LOAD_EXTENSION
+/*
+** A function that loads a shared-library extension then returns NULL.
+*/
+static void loadExt(sqlite3_context *context, int argc, sqlite3_value **argv){
+ const char *zFile = (const char *)sqlite3_value_text(argv[0]);
+ const char *zProc = 0;
+ sqlite3 *db = sqlite3_user_data(context);
+ char *zErrMsg = 0;
+
+ if( argc==2 ){
+ zProc = (const char *)sqlite3_value_text(argv[1]);
+ }
+ if( sqlite3_load_extension(db, zFile, zProc, &zErrMsg) ){
+ sqlite3_result_error(context, zErrMsg, -1);
+ sqlite3_free(zErrMsg);
+ }
+}
+#endif
+
#ifdef SQLITE_TEST
/*
** This function generates a string of random characters. Used for
@@ -817,9 +860,11 @@
*/
typedef struct SumCtx SumCtx;
struct SumCtx {
- LONGDOUBLE_TYPE sum; /* Sum of terms */
- i64 cnt; /* Number of elements summed */
- u8 approx; /* True if sum is approximate */
+ double rSum; /* Floating point sum */
+ i64 iSum; /* Integer sum */
+ i64 cnt; /* Number of elements summed */
+ u8 overflow; /* True if integer overflow seen */
+ u8 approx; /* True if non-integer value was input to the sum */
};
/*
@@ -829,16 +874,8 @@
** that it returns NULL if it sums over no inputs. TOTAL returns
** 0.0 in that case. In addition, TOTAL always returns a float where
** SUM might return an integer if it never encounters a floating point
-** value.
-**
-** I am told that SUM() should raise an exception if it encounters
-** a integer overflow. But after pondering this, I decided that
-** behavior leads to brittle programs. So instead, I have coded
-** SUM() to revert to using floating point if it encounters an
-** integer overflow. The answer may not be exact, but it will be
-** close. If the SUM() function returns an integer, the value is
-** exact. If SUM() returns a floating point value, it means the
-** value might be approximated.
+** value. TOTAL never fails, but SUM might through an exception if
+** it overflows an integer.
*/
static void sumStep(sqlite3_context *context, int argc, sqlite3_value **argv){
SumCtx *p;
@@ -849,13 +886,18 @@
if( p && type!=SQLITE_NULL ){
p->cnt++;
if( type==SQLITE_INTEGER ){
- p->sum += sqlite3_value_int64(argv[0]);
- if( !p->approx ){
- i64 iVal;
- p->approx = p->sum!=(LONGDOUBLE_TYPE)(iVal = (i64)p->sum);
+ i64 v = sqlite3_value_int64(argv[0]);
+ p->rSum += v;
+ if( (p->approx|p->overflow)==0 ){
+ i64 iNewSum = p->iSum + v;
+ int s1 = p->iSum >> (sizeof(i64)*8-1);
+ int s2 = v >> (sizeof(i64)*8-1);
+ int s3 = iNewSum >> (sizeof(i64)*8-1);
+ p->overflow = (s1&s2&~s3) | (~s1&~s2&s3);
+ p->iSum = iNewSum;
}
}else{
- p->sum += sqlite3_value_double(argv[0]);
+ p->rSum += sqlite3_value_double(argv[0]);
p->approx = 1;
}
}
@@ -864,10 +906,12 @@
SumCtx *p;
p = sqlite3_aggregate_context(context, 0);
if( p && p->cnt>0 ){
- if( p->approx ){
- sqlite3_result_double(context, p->sum);
+ if( p->overflow ){
+ sqlite3_result_error(context,"integer overflow",-1);
+ }else if( p->approx ){
+ sqlite3_result_double(context, p->rSum);
}else{
- sqlite3_result_int64(context, (i64)p->sum);
+ sqlite3_result_int64(context, p->iSum);
}
}
}
@@ -875,13 +919,13 @@
SumCtx *p;
p = sqlite3_aggregate_context(context, 0);
if( p && p->cnt>0 ){
- sqlite3_result_double(context, p->sum/(double)p->cnt);
+ sqlite3_result_double(context, p->rSum/(double)p->cnt);
}
}
static void totalFinalize(sqlite3_context *context){
SumCtx *p;
p = sqlite3_aggregate_context(context, 0);
- sqlite3_result_double(context, p ? p->sum : 0.0);
+ sqlite3_result_double(context, p ? p->rSum : 0.0);
}
/*
@@ -993,9 +1037,14 @@
{ "last_insert_rowid", 0, 1, SQLITE_UTF8, 0, last_insert_rowid },
{ "changes", 0, 1, SQLITE_UTF8, 0, changes },
{ "total_changes", 0, 1, SQLITE_UTF8, 0, total_changes },
+ { "match", 2, 0, SQLITE_UTF8, 0, matchStub },
#ifdef SQLITE_SOUNDEX
{ "soundex", 1, 0, SQLITE_UTF8, 0, soundexFunc},
#endif
+#ifndef SQLITE_OMIT_LOAD_EXTENSION
+ { "load_extension", 1, 1, SQLITE_UTF8, 0, loadExt },
+ { "load_extension", 2, 1, SQLITE_UTF8, 0, loadExt },
+#endif
#ifdef SQLITE_TEST
{ "randstr", 2, 0, SQLITE_UTF8, 0, randStr },
{ "test_destructor", 1, 1, SQLITE_UTF8, 0, test_destructor},
@@ -1062,7 +1111,7 @@
}
sqlite3RegisterDateTimeFunctions(db);
#ifdef SQLITE_SSE
- sqlite3SseFunctions(db);
+ (void)sqlite3SseFunctions(db);
#endif
#ifdef SQLITE_CASE_SENSITIVE_LIKE
sqlite3RegisterLikeFunctions(db, 1);
Modified: Frontier/vendor/sqlite3/current/hash.c
===================================================================
--- Frontier/vendor/sqlite3/current/hash.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/hash.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -12,7 +12,7 @@
** This is the implementation of generic hash-tables
** used in SQLite.
**
-** $Id: hash.c,v 1.17 2005/10/03 15:11:09 drh Exp $
+** $Id: hash.c,v 1.18 2006/02/14 10:48:39 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <assert.h>
@@ -41,6 +41,8 @@
pNew->count = 0;
pNew->htsize = 0;
pNew->ht = 0;
+ pNew->xMalloc = sqlite3MallocX;
+ pNew->xFree = sqlite3FreeX;
}
/* Remove all entries from a hash table. Reclaim all memory.
@@ -53,15 +55,15 @@
assert( pH!=0 );
elem = pH->first;
pH->first = 0;
- if( pH->ht ) sqliteFree(pH->ht);
+ if( pH->ht ) pH->xFree(pH->ht);
pH->ht = 0;
pH->htsize = 0;
while( elem ){
HashElem *next_elem = elem->next;
if( pH->copyKey && elem->pKey ){
- sqliteFree(elem->pKey);
+ pH->xFree(elem->pKey);
}
- sqliteFree(elem);
+ pH->xFree(elem);
elem = next_elem;
}
pH->count = 0;
@@ -222,9 +224,9 @@
int (*xHash)(const void*,int); /* The hash function */
assert( (new_size & (new_size-1))==0 );
- new_ht = (struct _ht *)sqliteMalloc( new_size*sizeof(struct _ht) );
+ new_ht = (struct _ht *)pH->xMalloc( new_size*sizeof(struct _ht) );
if( new_ht==0 ) return;
- if( pH->ht ) sqliteFree(pH->ht);
+ if( pH->ht ) pH->xFree(pH->ht);
pH->ht = new_ht;
pH->htsize = new_size;
xHash = hashFunction(pH->keyClass);
@@ -290,9 +292,9 @@
pEntry->chain = 0;
}
if( pH->copyKey && elem->pKey ){
- sqliteFree(elem->pKey);
+ pH->xFree(elem->pKey);
}
- sqliteFree( elem );
+ pH->xFree( elem );
pH->count--;
if( pH->count<=0 ){
assert( pH->first==0 );
@@ -358,12 +360,12 @@
return old_data;
}
if( data==0 ) return 0;
- new_elem = (HashElem*)sqliteMalloc( sizeof(HashElem) );
+ new_elem = (HashElem*)pH->xMalloc( sizeof(HashElem) );
if( new_elem==0 ) return data;
if( pH->copyKey && pKey!=0 ){
- new_elem->pKey = sqliteMallocRaw( nKey );
+ new_elem->pKey = pH->xMalloc( nKey );
if( new_elem->pKey==0 ){
- sqliteFree(new_elem);
+ pH->xFree(new_elem);
return data;
}
memcpy((void*)new_elem->pKey, pKey, nKey);
@@ -376,7 +378,7 @@
rehash(pH,8);
if( pH->htsize==0 ){
pH->count = 0;
- sqliteFree(new_elem);
+ pH->xFree(new_elem);
return data;
}
}
Modified: Frontier/vendor/sqlite3/current/hash.h
===================================================================
--- Frontier/vendor/sqlite3/current/hash.h 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/hash.h 2006-09-23 18:20:39 UTC (rev 1523)
@@ -12,7 +12,7 @@
** This is the header file for the generic hash-table implemenation
** used in SQLite.
**
-** $Id: hash.h,v 1.8 2004/08/20 14:08:51 drh Exp $
+** $Id: hash.h,v 1.9 2006/02/14 10:48:39 danielk1977 Exp $
*/
#ifndef _SQLITE_HASH_H_
#define _SQLITE_HASH_H_
@@ -34,6 +34,8 @@
char copyKey; /* True if copy of key made on insert */
int count; /* Number of entries in this table */
HashElem *first; /* The first element of the array */
+ void *(*xMalloc)(int); /* malloc() function to use */
+ void (*xFree)(void *); /* free() function to use */
int htsize; /* Number of buckets in the hash table */
struct _ht { /* the hash table */
int count; /* Number of entries with this hash */
Modified: Frontier/vendor/sqlite3/current/insert.c
===================================================================
--- Frontier/vendor/sqlite3/current/insert.c 2006-09-18 21:43:27 UTC (rev 1522)
+++ Frontier/vendor/sqlite3/current/insert.c 2006-09-23 18:20:39 UTC (rev 1523)
@@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** to handle INSERT statements in SQLite.
**
-** $Id: insert.c,v 1.161 2006/02/10 02:27:43 danielk1977 Exp $
+** $Id: insert.c,v 1.170 2006/06/19 03:05:10 danielk1977 Exp $
*/
#include "sqliteInt.h"
@@ -269,11 +269,13 @@
if( sqlite3IsReadOnly(pParse, pTab, triggers_exist) ){
goto insert_cleanup;
}
- if( pTab==0 ) goto insert_cleanup;
+ assert( pTab!=0 );
/* If pTab is really a view, make sure it has been initialized.
+ **...
[truncated message content] |
|
From: <cre...@us...> - 2006-09-18 21:43:31
|
Revision: 1522
http://svn.sourceforge.net/frontierkernel/?rev=1522&view=rev
Author: creecode
Date: 2006-09-18 14:43:27 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
ignore mode1 and pbxuser files
Property Changed:
----------------
Frontier/branches/FSRef_Migration/build_XCode/Frontier.xcodeproj/
Property changes on: Frontier/branches/FSRef_Migration/build_XCode/Frontier.xcodeproj
___________________________________________________________________
Name: svn:ingore
+ *.mode1
*.pbxuser
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-18 21:09:13
|
Revision: 1521
http://svn.sourceforge.net/frontierkernel/?rev=1521&view=rev
Author: creecode
Date: 2006-09-18 14:09:11 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
changed properties to not include . in file extension, added reference to icns files for some extension types
Modified Paths:
--------------
Frontier/branches/FSRef_Migration/build_XCode/Frontier.xcodeproj/project.pbxproj
Modified: Frontier/branches/FSRef_Migration/build_XCode/Frontier.xcodeproj/project.pbxproj
===================================================================
--- Frontier/branches/FSRef_Migration/build_XCode/Frontier.xcodeproj/project.pbxproj 2006-09-18 20:51:51 UTC (rev 1520)
+++ Frontier/branches/FSRef_Migration/build_XCode/Frontier.xcodeproj/project.pbxproj 2006-09-18 21:09:11 UTC (rev 1521)
@@ -7,6 +7,14 @@
objects = {
/* Begin PBXBuildFile section */
+ 5D14D06C0AA3B0EE00D5E977 /* Frontier FTsc.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D06B0AA3B0EE00D5E977 /* Frontier FTsc.icns */; };
+ 5D14D0820AA3B61C00D5E977 /* Frontier FTwp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D0810AA3B61C00D5E977 /* Frontier FTwp.icns */; };
+ 5D14D08E0AA3BAC100D5E977 /* Frontier FTds.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D08A0AA3BAC100D5E977 /* Frontier FTds.icns */; };
+ 5D14D08F0AA3BAC100D5E977 /* Frontier FTmb.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D08B0AA3BAC100D5E977 /* Frontier FTmb.icns */; };
+ 5D14D0900AA3BAC100D5E977 /* Frontier FTop.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D08C0AA3BAC100D5E977 /* Frontier FTop.icns */; };
+ 5D14D0910AA3BAC100D5E977 /* Frontier FTtb.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D08D0AA3BAC100D5E977 /* Frontier FTtb.icns */; };
+ 5D14D0990AA3BD5F00D5E977 /* Frontier TABL.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D0980AA3BD5F00D5E977 /* Frontier TABL.icns */; };
+ 5D14D0A40AA3C04400D5E977 /* Frontier FATP.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5D14D0A30AA3C04300D5E977 /* Frontier FATP.icns */; };
5D2A49B40A2E4A3B00BC885B /* FSCopyObject.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D2A49B00A2E4A3B00BC885B /* FSCopyObject.c */; };
5D2A49B50A2E4A3B00BC885B /* FSCopyObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D2A49B10A2E4A3B00BC885B /* FSCopyObject.h */; };
5D2A49B60A2E4A3B00BC885B /* GenLinkedList.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D2A49B20A2E4A3B00BC885B /* GenLinkedList.c */; };
@@ -1048,10 +1056,19 @@
/* End PBXBuildStyle section */
/* Begin PBXFileReference section */
+ 5D14D06B0AA3B0EE00D5E977 /* Frontier FTsc.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FTsc.icns"; path = "../resources/Frontier/Frontier FTsc.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D0810AA3B61C00D5E977 /* Frontier FTwp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FTwp.icns"; path = "../resources/Frontier/Frontier FTwp.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D08A0AA3BAC100D5E977 /* Frontier FTds.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FTds.icns"; path = "../resources/Frontier/Frontier FTds.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D08B0AA3BAC100D5E977 /* Frontier FTmb.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FTmb.icns"; path = "../resources/Frontier/Frontier FTmb.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D08C0AA3BAC100D5E977 /* Frontier FTop.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FTop.icns"; path = "../resources/Frontier/Frontier FTop.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D08D0AA3BAC100D5E977 /* Frontier FTtb.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FTtb.icns"; path = "../resources/Frontier/Frontier FTtb.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D0980AA3BD5F00D5E977 /* Frontier TABL.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier TABL.icns"; path = "../resources/Frontier/Frontier TABL.icns"; sourceTree = SOURCE_ROOT; };
+ 5D14D0A30AA3C04300D5E977 /* Frontier FATP.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Frontier FATP.icns"; path = "../resources/Frontier/Frontier FATP.icns"; sourceTree = SOURCE_ROOT; };
5D2A49B00A2E4A3B00BC885B /* FSCopyObject.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = FSCopyObject.c; path = ../Common/FSCopyObject/Sources/FSCopyObject.c; sourceTree = SOURCE_ROOT; };
5D2A49B10A2E4A3B00BC885B /* FSCopyObject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FSCopyObject.h; path = ../Common/FSCopyObject/Sources/FSCopyObject.h; sourceTree = SOURCE_ROOT; };
5D2A49B20A2E4A3B00BC885B /* GenLinkedList.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = GenLinkedList.c; path = ../Common/FSCopyObject/Sources/GenLinkedList.c; sourceTree = SOURCE_ROOT; };
5D2A49B30A2E4A3B00BC885B /* GenLinkedList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GenLinkedList.h; path = ../Common/FSCopyObject/Sources/GenLinkedList.h; sourceTree = SOURCE_ROOT; };
+ 5DBE32D50A6960D700D05D71 /* FrontierWinMain.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = FrontierWinMain.c; path = ../Common/source/FrontierWinMain.c; sourceTree = SOURCE_ROOT; };
65059B4E09968C1400410571 /* OPML.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OPML.app; sourceTree = BUILT_PRODUCTS_DIR; };
65059B760996945100410571 /* OPML.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = OPML.icns; path = ../resources/OPML/OPML.icns; sourceTree = SOURCE_ROOT; };
65059B770996945100410571 /* OPMLdoc.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = OPMLdoc.icns; path = ../resources/OPML/OPMLdoc.icns; sourceTree = SOURCE_ROOT; };
@@ -1615,8 +1632,9 @@
65123A7F09D9C116005AB449 /* Win32 Files */ = {
isa = PBXGroup;
children = (
+ 5DBE32D50A6960D700D05D71 /* FrontierWinMain.c */,
+ 65123A8509D9C173005AB449 /* kernelverbs.rc */,
65123A8209D9C14C005AB449 /* megastubs.c */,
- 65123A8509D9C173005AB449 /* kernelverbs.rc */,
65123A8609D9C173005AB449 /* WinLand.rc */,
);
comments = "These files are only used in the Windows version, so they are not part of any Xcode compilation target. They are just included for reference.";
@@ -2386,6 +2404,14 @@
BB3B83610730603C0049D0C1 /* Resources */ = {
isa = PBXGroup;
children = (
+ 5D14D0A30AA3C04300D5E977 /* Frontier FATP.icns */,
+ 5D14D08A0AA3BAC100D5E977 /* Frontier FTds.icns */,
+ 5D14D08B0AA3BAC100D5E977 /* Frontier FTmb.icns */,
+ 5D14D08C0AA3BAC100D5E977 /* Frontier FTop.icns */,
+ 5D14D06B0AA3B0EE00D5E977 /* Frontier FTsc.icns */,
+ 5D14D08D0AA3BAC100D5E977 /* Frontier FTtb.icns */,
+ 5D14D0810AA3B61C00D5E977 /* Frontier FTwp.icns */,
+ 5D14D0980AA3BD5F00D5E977 /* Frontier TABL.icns */,
DEA58AB307435A9500BAB271 /* Frontier.icns */,
65059B760996945100410571 /* OPML.icns */,
65059B770996945100410571 /* OPMLdoc.icns */,
@@ -3039,6 +3065,14 @@
buildActionMask = 2147483647;
files = (
DEA58AB407435A9500BAB271 /* Frontier.icns in Resources */,
+ 5D14D0A40AA3C04400D5E977 /* Frontier FATP.icns in Resources */,
+ 5D14D08E0AA3BAC100D5E977 /* Frontier FTds.icns in Resources */,
+ 5D14D08F0AA3BAC100D5E977 /* Frontier FTmb.icns in Resources */,
+ 5D14D0900AA3BAC100D5E977 /* Frontier FTop.icns in Resources */,
+ 5D14D06C0AA3B0EE00D5E977 /* Frontier FTsc.icns in Resources */,
+ 5D14D0910AA3BAC100D5E977 /* Frontier FTtb.icns in Resources */,
+ 5D14D0820AA3B61C00D5E977 /* Frontier FTwp.icns in Resources */,
+ 5D14D0990AA3BD5F00D5E977 /* Frontier TABL.icns in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3998,6 +4032,7 @@
5DA7A4B30A2789990078C0A3 /* Development */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk;
};
name = Development;
@@ -4005,6 +4040,7 @@
5DA7A4B40A2789990078C0A3 /* Deployment */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk;
};
name = Deployment;
@@ -4012,6 +4048,7 @@
5DA7A4B50A2789990078C0A3 /* Default */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk;
};
name = Default;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-18 20:52:01
|
Revision: 1520
http://svn.sourceforge.net/frontierkernel/?rev=1520&view=rev
Author: creecode
Date: 2006-09-18 13:51:51 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
icns files for document icons
Added Paths:
-----------
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FATP.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTds.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTmb.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTop.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTsc.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTtb.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTwp.icns
Frontier/branches/FSRef_Migration/resources/Frontier/Frontier TABL.icns
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FATP.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FATP.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTds.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTds.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTmb.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTmb.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTop.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTop.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTsc.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTsc.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTtb.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTtb.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTwp.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier FTwp.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier TABL.icns
===================================================================
(Binary files differ)
Property changes on: Frontier/branches/FSRef_Migration/resources/Frontier/Frontier TABL.icns
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-18 20:47:04
|
Revision: 1519
http://svn.sourceforge.net/frontierkernel/?rev=1519&view=rev
Author: creecode
Date: 2006-09-18 13:46:59 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
for Mac, in wpedit function add window proxy icon
Modified Paths:
--------------
Frontier/branches/FSRef_Migration/Common/source/wpverbs.c
Modified: Frontier/branches/FSRef_Migration/Common/source/wpverbs.c
===================================================================
--- Frontier/branches/FSRef_Migration/Common/source/wpverbs.c 2006-09-18 20:45:12 UTC (rev 1518)
+++ Frontier/branches/FSRef_Migration/Common/source/wpverbs.c 2006-09-18 20:46:59 UTC (rev 1519)
@@ -55,8 +55,13 @@
#include "wpverbs.h"
#include "kernelverbdefs.h"
+#ifdef MACVERSION
+ #include "MoreFilesX.h"
+#endif
+
+
#define wperrorlist 264
#define nowperror 1
#define namenotwperror 2
@@ -876,14 +881,15 @@
boolean wpedit (hdlexternalvariable hvariable, hdlwindowinfo hparent, ptrfilespec fs, bigstring bstitle, rectparam rzoom) {
- /*
- 4.17.97 dmb: protect against globals smashing under Windows
-
- 5.0b18 dmb: further protection: set flwindowopen bit before
- newchildwindow, which will yield
-
- 5.0.2b6 dmb: added flwindowopen loop to handle Windows async overlap
- */
+ //
+ // 2006-09-16 creedon: on Mac, set window proxy icon
+ //
+ // 5.0b18 dmb: further protection: set flwindowopen bit before newchildwindow, which will yield
+ //
+ // 1997-04-17 dmb: protect against globals smashing under Windows
+ //
+ // 5.0.2b6 dmb: added flwindowopen loop to handle Windows async overlap
+ //
register hdlwpvariable hv = (hdlwpvariable) hvariable;
register hdlwprecord hwp;
@@ -891,12 +897,12 @@
WindowPtr w;
hdlwindowinfo hi;
- if (!wpverbinmemory ((hdlexternalvariable) hv)) /*couldn't swap it into memory*/
+ if (!wpverbinmemory ((hdlexternalvariable) hv)) // couldn't swap it into memory
return (false);
- hwp = (hdlwprecord) (**hv).variabledata; /*it's in memory*/
+ hwp = (hdlwprecord) (**hv).variabledata; // it's in memory
- while ((**hwp).flwindowopen) { /*bring to front, return true*/
+ while ((**hwp).flwindowopen) { // bring to front, return true
if (shellfinddatawindow ((Handle) hwp, &hi)) {
@@ -914,7 +920,7 @@
#endif
}
- rwindow = (**hwp).windowrect; /*window comes up where it was last time*/
+ rwindow = (**hwp).windowrect; // window comes up where it was last time
(**hwp).flwindowopen = true;
@@ -925,14 +931,24 @@
return (false);
}
- wpdata = hwp; /*copy into global*/
+ wpdata = hwp; // copy into global
getwindowinfo (w, &hi);
(**hi).hdata = (Handle) hwp;
- if (fs != nil)
+ if ( fs != nil ) {
+
(**hi).fspec = *fs;
+
+ #ifdef MACVERSION
+
+ if ( FSRefValid ( &( *fs ).fsref ) && ( *fs ).path == NULL )
+ SetWindowProxyCreatorAndType ( w, 'LAND', 'FTwp', kOnSystemDisk );
+
+ #endif
+
+ }
shellpushglobals (w);
@@ -940,15 +956,16 @@
shellpopglobals ();
- //(**hwp).flwindowopen = true;
+ // (**hwp).flwindowopen = true;
if ((**hwp).fldirty)
shellsetwindowchanges (hi, true);
- windowzoom (w); /*show the window to the user. do last, or we'd have to push globals*/
+ windowzoom (w); // show the window to the user. do last, or we'd have to push globals
return (true);
- } /*wpedit*/
+
+ } // wpedit
static boolean wpfunctionvalue (short token, hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-18 20:45:15
|
Revision: 1518
http://svn.sourceforge.net/frontierkernel/?rev=1518&view=rev
Author: creecode
Date: 2006-09-18 13:45:12 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
for Mac, in tableedit function, only add window proxy icon when filespec is valid
Modified Paths:
--------------
Frontier/branches/FSRef_Migration/Common/source/tableexternal.c
Modified: Frontier/branches/FSRef_Migration/Common/source/tableexternal.c
===================================================================
--- Frontier/branches/FSRef_Migration/Common/source/tableexternal.c 2006-09-18 20:30:50 UTC (rev 1517)
+++ Frontier/branches/FSRef_Migration/Common/source/tableexternal.c 2006-09-18 20:45:12 UTC (rev 1518)
@@ -50,9 +50,13 @@
#include "claycallbacks.h"
#include "cancoon.h"
+#ifdef MACVERSION
+ #include "MoreFilesX.h"
+#endif
+
boolean tablevaltotable (tyvaluerecord val, hdlhashtable *htable, hdlhashnode hnode) {
/*
@@ -430,10 +434,12 @@
boolean tableedit (hdlexternalvariable hvariable, hdlwindowinfo hparent, ptrfilespec fs, bigstring bs, rectparam rzoom) {
- /*
- 3/30/93 dmb: don't resort the table before zooming. not sure why this
- was ever necessary, but it sure is slow for large tables
- */
+ //
+ // 2006-09-16 creedon: on Mac, only set the window proxy icon when the file exists
+ //
+ // 1993--3-30 dmb: don't resort the table before zooming. not sure why this was ever necessary, but it sure is slow
+ // for large tables
+ //
register hdltablevariable hv = (hdltablevariable) hvariable;
register hdlhashtable ht;
@@ -444,7 +450,7 @@
WindowPtr w;
hdlwindowinfo hi;
- if (!tableverbinmemory ((hdlexternalvariable) hv, HNoNode)) /*couldn't swap it into memory*/
+ if (!tableverbinmemory ((hdlexternalvariable) hv, HNoNode)) // couldn't swap it into memory
return (false);
ht = (hdlhashtable) (**hv).variabledata;
@@ -452,7 +458,7 @@
if (tablefindvariable ((hdlexternalvariable) hv, &hparenttable, bsname))
(**ht).parenthashtable = hparenttable;
- if (tablewindowopen ((hdlexternalvariable) hv, &hi)) { /*bring to front, return true*/
+ if (tablewindowopen ((hdlexternalvariable) hv, &hi)) { // bring to front, return true
if ((*rzoom).top > -2)
shellbringtofront (hi);
@@ -463,7 +469,7 @@
hf = (**ht).hashtableformats;
if (hf == nil)
- rwindow.top = -1; /*accept default*/
+ rwindow.top = -1; // accept default
else
rwindow = (**hf).windowrect;
@@ -472,8 +478,18 @@
getwindowinfo (w, &hi);
- if (fs != nil)
+ if ( fs != nil ) {
+
(**hi).fspec = *fs;
+
+ #ifdef MACVERSION
+
+ if ( FSRefValid ( &( *fs ).fsref ) && ( *fs ).path == NULL )
+ SetWindowProxyCreatorAndType ( w, 'LAND', 'FTtb', kOnSystemDisk );
+
+ #endif
+
+ }
if (!tableverbsetupdisplay (ht, hi)) {
@@ -481,12 +497,13 @@
return (false);
*/
+
}
hf = (**ht).hashtableformats;
- //if ((**hf).flneedresort)
- // hashresort (ht, nil); /*sort the table before zooming*/
+ // if ((**hf).flneedresort)
+ // hashresort (ht, nil); // sort the table before zooming
if ((**ht).fldirty)
shellsetwindowchanges (hi, true);
@@ -495,22 +512,17 @@
(**(**hf).houtline).flwindowopen = true;
- #if TARGET_API_MAC_CARBON == 1
-
- SetWindowProxyCreatorAndType (w, 'LAND', 'FTtb', kOnSystemDisk);
-
- #endif
-
windowzoom (w);
- #if TARGET_API_MAC_CARBON == 1
+ #ifdef MACVERSION
shellupdatewindow (w);
#endif
return (true);
- } /*tableedit*/
+
+ } // tableedit
boolean tablewindowclosed (hdlexternalvariable hvariable) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-18 20:30:52
|
Revision: 1517
http://svn.sourceforge.net/frontierkernel/?rev=1517&view=rev
Author: creecode
Date: 2006-09-18 13:30:50 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
in windowgetfspec function, removed extend filespec function
Modified Paths:
--------------
Frontier/branches/FSRef_Migration/Common/source/shellwindow.c
Modified: Frontier/branches/FSRef_Migration/Common/source/shellwindow.c
===================================================================
--- Frontier/branches/FSRef_Migration/Common/source/shellwindow.c 2006-09-18 20:21:58 UTC (rev 1516)
+++ Frontier/branches/FSRef_Migration/Common/source/shellwindow.c 2006-09-18 20:30:50 UTC (rev 1517)
@@ -507,7 +507,7 @@
boolean windowgetfspec ( WindowPtr w, ptrfilespec fspec ) {
//
- // 2006-08-16 creedon: for Mac, FSRef-ized
+ // 2006-09-14 creedon: for Mac, FSRef-ized
//
// 1997-06-18 dmb: return boolean value indicating whether or not the fspec actually points to an existing file
//
@@ -526,8 +526,6 @@
if (!getfsvolume (fspec, &vnum)) // don't allow default vol to satisfy fileexists
return (false);
- ( void ) extendfilespec ( fspec, fspec );
-
return ( fileexists ( fspec, &flfolder ) );
} // windowgetfspec
@@ -1807,7 +1805,7 @@
} /*newshellwindow*/
-boolean newfilewindow (ptrfilespec fspec, hdlfilenum fnum, short rnum, boolean flhidden, WindowPtr *wnew) {
+boolean newfilewindow ( const ptrfilespec fspec, hdlfilenum fnum, short rnum, boolean flhidden, WindowPtr *wnew ) {
/*
create a new window to display the contents of a file.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-09-18 20:21:59
|
Revision: 1516
http://svn.sourceforge.net/frontierkernel/?rev=1516&view=rev
Author: creecode
Date: 2006-09-18 13:21:58 -0700 (Mon, 18 Sep 2006)
Log Message:
-----------
in filemenufunctionvalue function, case openfunc extend the filespec
Modified Paths:
--------------
Frontier/branches/FSRef_Migration/Common/source/shellverbs.c
Modified: Frontier/branches/FSRef_Migration/Common/source/shellverbs.c
===================================================================
--- Frontier/branches/FSRef_Migration/Common/source/shellverbs.c 2006-09-18 20:00:38 UTC (rev 1515)
+++ Frontier/branches/FSRef_Migration/Common/source/shellverbs.c 2006-09-18 20:21:58 UTC (rev 1516)
@@ -1145,6 +1145,7 @@
}
case openfunc: {
+
tyfilespec fs;
tyvaluerecord vhidden;
short ctconsumed = 0;
@@ -1158,13 +1159,15 @@
ctpositional = ctconsumed;
- setbooleanvalue (false, &vhidden); //default value
+ setbooleanvalue (false, &vhidden); // default value
if (!getoptionalparamvalue (hparam1, &ctconsumed, &ctpositional, str_hidden, &vhidden))
return (false);
- langsaveglobals (); /*see comment at function head*/
+ langsaveglobals (); // see comment at function head
+ ( void ) extendfilespec ( &fs, &fs );
+
fl = shellopenfile (&fs, vhidden.data.flvalue, &w);
if (!langrestoreglobals ())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|