Compare commits
1 Commits
version-3.50.1
...
typos
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d6fe13ddf |
+1
-1
@@ -86,7 +86,7 @@ OPT_FEATURE_FLAGS = @OPT_FEATURE_FLAGS@
|
||||
|
||||
TCC += $(OPT_FEATURE_FLAGS)
|
||||
|
||||
# Add in any optional parameters specified on the make commane line
|
||||
# Add in any optional parameters specified on the make command line
|
||||
# ie. make "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1".
|
||||
TCC += $(OPTS)
|
||||
|
||||
|
||||
+1
-1
@@ -1033,7 +1033,7 @@ REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_WIN32_USE_UUID=1
|
||||
TCC = $(TCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS)
|
||||
RCC = $(RCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS)
|
||||
|
||||
# Add in any optional parameters specified on the commane line, e.g.
|
||||
# Add in any optional parameters specified on the command line, e.g.
|
||||
# nmake /f Makefile.msc all "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1"
|
||||
#
|
||||
TCC = $(TCC) $(OPTS)
|
||||
|
||||
@@ -15,7 +15,7 @@ The [Fossil repository](https://sqlite.org/src/timeline) contains the urtext.
|
||||
If you are reading this on GitHub or some other Git repository or service,
|
||||
then you are looking at a mirror. The names of check-ins and
|
||||
other artifacts in a Git mirror are different from the official
|
||||
names for those objects. The offical names for check-ins are
|
||||
names for those objects. The official names for check-ins are
|
||||
found in a footer on the check-in comment for authorized mirrors.
|
||||
The official check-in name can also be seen in the `manifest.uuid` file
|
||||
in the root of the tree. Always use the official name, not the
|
||||
@@ -136,7 +136,7 @@ the "tclsqlite.c" file which implements the
|
||||
extension and only later escaped to the wild as an independent library.)
|
||||
|
||||
Test scripts and programs are found in the **test/** subdirectory.
|
||||
Addtional test code is found in other source repositories.
|
||||
Additional test code is found in other source repositories.
|
||||
See [How SQLite Is Tested](http://www.sqlite.org/testing.html) for
|
||||
additional information.
|
||||
|
||||
@@ -237,7 +237,7 @@ prepared statements, the description of
|
||||
[how transactions work](http://www.sqlite.org/atomiccommit.html), and
|
||||
the [overview of the query planner](http://www.sqlite.org/optoverview.html).
|
||||
|
||||
Years of effort have gone into optimizating SQLite, both
|
||||
Years of effort have gone into optimizing SQLite, both
|
||||
for small size and high performance. And optimizations tend to result in
|
||||
complex code. So there is a lot of complexity in the current SQLite
|
||||
implementation. It will not be the easiest library in the world to hack.
|
||||
|
||||
Vendored
-1
@@ -7969,4 +7969,3 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||
|
||||
|
||||
@@ -367,4 +367,3 @@ operates.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
|
||||
@@ -776,7 +776,7 @@ REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_WIN32_USE_UUID=1
|
||||
TCC = $(TCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS)
|
||||
RCC = $(RCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS)
|
||||
|
||||
# Add in any optional parameters specified on the commane line, e.g.
|
||||
# Add in any optional parameters specified on the command line, e.g.
|
||||
# nmake /f Makefile.msc all "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1"
|
||||
#
|
||||
TCC = $(TCC) $(OPTS)
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ This package contains:
|
||||
* the sqlite3.h and sqlite3ext.h header files that define the C-language
|
||||
interface to the sqlite3.c library file
|
||||
* the shell.c file used to build the sqlite3 command-line shell program
|
||||
* autoconf/automake installation infrastucture for building on POSIX
|
||||
* autoconf/automake installation infrastructure for building on POSIX
|
||||
compliant systems
|
||||
* a Makefile.msc, sqlite3.rc, and Replace.cs for building with Microsoft
|
||||
Visual C++ on Windows
|
||||
|
||||
@@ -174,8 +174,8 @@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(C
|
||||
|
||||
#========================================================================
|
||||
# TEA TARGETS. Please note that the "libraries:" target refers to platform
|
||||
# independent files, and the "binaries:" target inclues executable programs and
|
||||
# platform-dependent libraries. Modify these targets so that they install
|
||||
# independent files, and the "binaries:" target includes executable programs
|
||||
# and platform-dependent libraries. Modify these targets so that they install
|
||||
# the various pieces of your package. The make and install rules
|
||||
# for the BINARIES that you specified above have already been done.
|
||||
#========================================================================
|
||||
|
||||
@@ -86,7 +86,7 @@ TEA_ADD_TCL_SOURCES([])
|
||||
# the system shared library for SQLite rather than statically linking
|
||||
# against its own private copy. This is dangerous and leads to
|
||||
# undersirable dependences and is not recommended.
|
||||
# Patchs from rmax.
|
||||
# Patches from rmax.
|
||||
#--------------------------------------------------------------------
|
||||
AC_ARG_WITH([system-sqlite],
|
||||
[AC_HELP_STRING([--with-system-sqlite],
|
||||
|
||||
@@ -204,13 +204,13 @@ CheckForCompilerFeature(
|
||||
sa.bInheritHandle = FALSE;
|
||||
|
||||
/*
|
||||
* Create a non-inheritible pipe.
|
||||
* Create a non-inheritable pipe.
|
||||
*/
|
||||
|
||||
CreatePipe(&Out.pipe, &h, &sa, 0);
|
||||
|
||||
/*
|
||||
* Dupe the write side, make it inheritible, and close the original.
|
||||
* Dupe the write side, make it inheritable, and close the original.
|
||||
*/
|
||||
|
||||
DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE,
|
||||
@@ -338,13 +338,13 @@ CheckForLinkerFeature(
|
||||
sa.bInheritHandle = TRUE;
|
||||
|
||||
/*
|
||||
* Create a non-inheritible pipe.
|
||||
* Create a non-inheritable pipe.
|
||||
*/
|
||||
|
||||
CreatePipe(&Out.pipe, &h, &sa, 0);
|
||||
|
||||
/*
|
||||
* Dupe the write side, make it inheritible, and close the original.
|
||||
* Dupe the write side, make it inheritable, and close the original.
|
||||
*/
|
||||
|
||||
DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE,
|
||||
|
||||
@@ -708,4 +708,3 @@ TK_INCLUDES = -I"$(_TKDIR)\generic" -I"$(_TKDIR)\win" -I"$(_TKDIR)\xlib"
|
||||
!message *** Link options '$(LINKERFLAGS)'
|
||||
|
||||
!endif
|
||||
|
||||
|
||||
@@ -13921,4 +13921,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
|
||||
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
|
||||
fi
|
||||
|
||||
|
||||
@@ -446,7 +446,7 @@ proc sqlitecon::Button1 {w x y} {
|
||||
focus $w
|
||||
}
|
||||
|
||||
# Find the boundry between characters that is nearest
|
||||
# Find the boundary between characters that is nearest
|
||||
# to $x,$y
|
||||
#
|
||||
proc sqlitecon::nearestBoundry {w x y} {
|
||||
@@ -567,7 +567,7 @@ proc sqlitecon::Cut w {
|
||||
}
|
||||
}
|
||||
|
||||
# Do a paste opeation.
|
||||
# Do a paste operation.
|
||||
#
|
||||
proc sqlitecon::Paste w {
|
||||
if {[sqlitecon::canCut $w]==1} {
|
||||
|
||||
@@ -81,7 +81,3 @@ Assumptions:
|
||||
before the posix advisory lock is automatically dropped - there is
|
||||
no chance that another client will be able to read the file in a
|
||||
half-committed state before the rollback operation occurs.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -696,7 +696,7 @@ on Parse().
|
||||
<h4>The <tt>%extra_context</tt> directive</h4>
|
||||
|
||||
The <tt>%extra_context</tt> directive instructs Lemon to add a 2nd parameter
|
||||
to the parameter list of the ParseAlloc() and ParseInif() functions. Lemon
|
||||
to the parameter list of the ParseAlloc() and ParseInit() functions. Lemon
|
||||
doesn't do anything itself with these extra argument, but it does
|
||||
store the value make it available to C-code action routines, destructors,
|
||||
and so forth. For example, if the grammar file contains:</p>
|
||||
@@ -755,7 +755,7 @@ is allowed between the "%" and the directive name.</p>
|
||||
<p>Grammar text in between "<tt>%ifdef MACRO</tt>" and the next nested
|
||||
"<tt>%endif</tt>" is
|
||||
ignored unless the "-DMACRO" command-line option is used. Grammar text
|
||||
betwen "<tt>%ifndef MACRO</tt>" and the next nested "<tt>%endif</tt>" is
|
||||
between "<tt>%ifndef MACRO</tt>" and the next nested "<tt>%endif</tt>" is
|
||||
included except when the "-DMACRO" command-line option is used.<p>
|
||||
|
||||
<p>The text in between "<tt>%if</tt> <i>CONDITIONAL</i>" and its
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Otherwise, the page is not synced until the xSync method of the VFS
|
||||
is called successfully on the file containing the page.
|
||||
|
||||
*** Definition: A page of the database file is said to be "overwriteable" if
|
||||
*** Definition: A page of the database file is said to be "overwritable" if
|
||||
one or more of the following are true about the page:
|
||||
|
||||
(a) The original content of the page as it was at the beginning of
|
||||
@@ -18,7 +18,7 @@
|
||||
(1) A page of the database file is never overwritten unless one of the
|
||||
following are true:
|
||||
|
||||
(a) The page and all other pages on the same sector are overwriteable.
|
||||
(a) The page and all other pages on the same sector are overwritable.
|
||||
|
||||
(b) The atomic page write optimization is enabled, and the entire
|
||||
transaction other than the update of the transaction sequence
|
||||
@@ -45,7 +45,7 @@
|
||||
*** Definition: Two databases (or the same database at two points it time)
|
||||
are said to be "logically equivalent" if they give the same answer to
|
||||
all queries. Note in particular the content of freelist leaf
|
||||
pages can be changed arbitarily without effecting the logical equivalence
|
||||
pages can be changed arbitrarily without effecting the logical equivalence
|
||||
of the database.
|
||||
|
||||
(7) At any time, if any subset, including the empty set and the total set,
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ The meanings of the various wal-index locking states is as follows:
|
||||
|
||||
A particular lock manager implementation may coalesce one or more of
|
||||
the wal-index locking states, though with a reduction in concurrency.
|
||||
For example, an implemention might implement only exclusive locking,
|
||||
For example, an implementation might implement only exclusive locking,
|
||||
in which case all states would be equivalent to CHECKPOINT, meaning that
|
||||
only one reader or one writer or one checkpointer could be active at a
|
||||
time. Or, an implementation might combine READ and READ_FULL into
|
||||
|
||||
@@ -84,5 +84,3 @@ from having to handle SQLITE\_BUSY errors and facilitate appropriate transfer
|
||||
of priorities between competing clients.
|
||||
|
||||
Clients that lock multiple databases simultaneously must be wary of deadlock.
|
||||
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ the database, eliminating the bottleneck.
|
||||
|
||||
You lose Durability with asynchronous I/O, but you still retain the
|
||||
other parts of ACID: Atomic, Consistent, and Isolated. Many
|
||||
appliations get along fine without the Durablity.
|
||||
applications get along fine without the Durability.
|
||||
|
||||
1.1 How it Works
|
||||
|
||||
|
||||
@@ -1329,10 +1329,10 @@ static sqlite3_vfs async_vfs = {
|
||||
** the write queue is empty.
|
||||
**
|
||||
** If both of the above variables are false, this procedure runs
|
||||
** indefinately, waiting for operations to be added to the write queue
|
||||
** indefinitely, waiting for operations to be added to the write queue
|
||||
** and processing them in the order in which they arrive.
|
||||
**
|
||||
** An artifical delay of async.ioDelay milliseconds is inserted before
|
||||
** An artificial delay of async.ioDelay milliseconds is inserted before
|
||||
** each write operation in order to simulate the effect of a slow disk.
|
||||
**
|
||||
** Only one instance of this procedure may be running at a time.
|
||||
@@ -1378,7 +1378,7 @@ static void asyncWriterThread(void){
|
||||
** * An ASYNC_CLOSE operation.
|
||||
** * An ASYNC_OPENEXCLUSIVE operation. For this one, we relinquish
|
||||
** the mutex, call the underlying xOpenExclusive() function, then
|
||||
** re-aquire the mutex before seting the AsyncFile.pBaseRead
|
||||
** re-acquire the mutex before setting the AsyncFile.pBaseRead
|
||||
** variable.
|
||||
** * ASYNC_SYNC and ASYNC_WRITE operations, if
|
||||
** SQLITE_ASYNC_TWO_FILEHANDLES was set at compile time and two
|
||||
|
||||
@@ -61,7 +61,7 @@ extern "C" {
|
||||
** objects within this function), then SQLITE_ERROR is also returned.
|
||||
** Finally, if the call to sqlite3_vfs_register() returns an error, then
|
||||
** the error code is returned to the user by this function. In all three
|
||||
** of these cases, intialization has failed and the asynchronous IO VFS
|
||||
** of these cases, initialization has failed and the asynchronous IO VFS
|
||||
** is not registered with SQLite.
|
||||
**
|
||||
** Otherwise, if no error occurs, SQLITE_OK is returned.
|
||||
|
||||
@@ -1784,7 +1784,7 @@ sqlite3expert *sqlite3_expert_new(sqlite3 *db, char **pzErrmsg){
|
||||
sqlite3_set_authorizer(pNew->dbv, idxAuthCallback, (void*)pNew);
|
||||
}
|
||||
|
||||
/* If an error has occurred, free the new object and reutrn NULL. Otherwise,
|
||||
/* If an error has occurred, free the new object and return NULL. Otherwise,
|
||||
** return the new sqlite3expert handle. */
|
||||
if( rc!=SQLITE_OK ){
|
||||
sqlite3_expert_destroy(pNew);
|
||||
|
||||
@@ -136,7 +136,7 @@ int sqlite3_expert_count(sqlite3expert*);
|
||||
**
|
||||
** EXPERT_REPORT_INDEXES:
|
||||
** Return a buffer containing the CREATE INDEX statements for all recommended
|
||||
** indexes for statement iStmt. If there are no new recommeded indexes, NULL
|
||||
** indexes for statement iStmt. If there are no new recommended indexes, NULL
|
||||
** is returned.
|
||||
**
|
||||
** EXPERT_REPORT_PLAN:
|
||||
|
||||
+2
-2
@@ -143,7 +143,7 @@ static int binCompare(const void *pKey1, int n1, const void *pKey2, int n2){
|
||||
/*
|
||||
** Return a pointer to the appropriate hash function given the key class.
|
||||
**
|
||||
** The C syntax in this function definition may be unfamilar to some
|
||||
** The C syntax in this function definition may be unfamiliar to some
|
||||
** programmers, so we provide the following additional explanation:
|
||||
**
|
||||
** The name of the function is "hashFunction". The function takes a
|
||||
@@ -224,7 +224,7 @@ static void insertElement(
|
||||
}
|
||||
|
||||
|
||||
/* Resize the hash table so that it cantains "new_size" buckets.
|
||||
/* Resize the hash table so that it contains "new_size" buckets.
|
||||
** "new_size" must be a power of 2. The hash table might fail
|
||||
** to resize if sqliteMalloc() fails.
|
||||
*/
|
||||
|
||||
+6
-6
@@ -1543,7 +1543,7 @@ static void fulltext_vtab_destroy(fulltext_vtab *v){
|
||||
** sqlite3IsIdChar[X] must be 1.
|
||||
**
|
||||
** Ticket #1066. the SQL standard does not allow '$' in the
|
||||
** middle of identfiers. But many SQL implementations do.
|
||||
** middle of identifiers. But many SQL implementations do.
|
||||
** SQLite will allow '$' in identifiers for compatibility.
|
||||
** But the feature is undocumented.
|
||||
*/
|
||||
@@ -1712,8 +1712,8 @@ static void dequoteString(char *z){
|
||||
**
|
||||
** Example:
|
||||
**
|
||||
** input: tokenize chinese ( 'simplifed' , 'mixed' )
|
||||
** output: chinese simplifed mixed
|
||||
** input: tokenize chinese ( 'simplified' , 'mixed' )
|
||||
** output: chinese simplified mixed
|
||||
**
|
||||
** Another example:
|
||||
**
|
||||
@@ -2586,7 +2586,7 @@ static int fulltextNext(sqlite3_vtab_cursor *pCursor){
|
||||
*/
|
||||
static int docListOfTerm(
|
||||
fulltext_vtab *v, /* The full text index */
|
||||
int iColumn, /* column to restrict to. No restrition if >=nColumn */
|
||||
int iColumn, /* column to restrict to. No restriction if >=nColumn */
|
||||
QueryTerm *pQTerm, /* Term we are looking for, or 1st term of a phrase */
|
||||
DocList **ppResult /* Write the result here */
|
||||
){
|
||||
@@ -2660,7 +2660,7 @@ static int checkColumnSpecifier(
|
||||
|
||||
/*
|
||||
** Parse the text at pSegment[0..nSegment-1]. Add additional terms
|
||||
** to the query being assemblied in pQuery.
|
||||
** to the query being assembled in pQuery.
|
||||
**
|
||||
** inPhrase is true if pSegment[0..nSegement-1] is contained within
|
||||
** double-quotes. If inPhrase is true, then the first term
|
||||
@@ -2954,7 +2954,7 @@ static int fulltextColumn(sqlite3_vtab_cursor *pCursor,
|
||||
}
|
||||
|
||||
/* This is the xRowid method. The SQLite core calls this routine to
|
||||
** retrive the rowid for the current row of the result set. The
|
||||
** retrieve the rowid for the current row of the result set. The
|
||||
** rowid should be written to *pRowid.
|
||||
*/
|
||||
static int fulltextRowid(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){
|
||||
|
||||
@@ -123,7 +123,7 @@ static int binCompare(const void *pKey1, int n1, const void *pKey2, int n2){
|
||||
/*
|
||||
** Return a pointer to the appropriate hash function given the key class.
|
||||
**
|
||||
** The C syntax in this function definition may be unfamilar to some
|
||||
** The C syntax in this function definition may be unfamiliar to some
|
||||
** programmers, so we provide the following additional explanation:
|
||||
**
|
||||
** The name of the function is "hashFunction". The function takes a
|
||||
@@ -182,7 +182,7 @@ static void insertElement(
|
||||
}
|
||||
|
||||
|
||||
/* Resize the hash table so that it cantains "new_size" buckets.
|
||||
/* Resize the hash table so that it contains "new_size" buckets.
|
||||
** "new_size" must be a power of 2. The hash table might fail
|
||||
** to resize if sqliteMalloc() fails.
|
||||
*/
|
||||
|
||||
@@ -143,7 +143,7 @@ static const char cType[] = {
|
||||
**
|
||||
** In these routine, the letters are in reverse order. So the 'y' rule
|
||||
** is that 'y' is a consonant unless it is followed by another
|
||||
** consonent.
|
||||
** consonant.
|
||||
*/
|
||||
static int isVowel(const char*);
|
||||
static int isConsonant(const char *z){
|
||||
@@ -239,7 +239,7 @@ static int doubleConsonant(const char *z){
|
||||
|
||||
/*
|
||||
** Return TRUE if the word ends with three letters which
|
||||
** are consonant-vowel-consonent and where the final consonant
|
||||
** are consonant-vowel-consonant and where the final consonant
|
||||
** is not 'w', 'x', or 'y'.
|
||||
**
|
||||
** The word is reversed here. So we are really checking the
|
||||
@@ -255,7 +255,7 @@ static int star_oh(const char *z){
|
||||
|
||||
/*
|
||||
** If the word ends with zFrom and xCond() is true for the stem
|
||||
** of the word that preceeds the zFrom ending, then change the
|
||||
** of the word that precedes the zFrom ending, then change the
|
||||
** ending to zTo.
|
||||
**
|
||||
** The input word *pz and zFrom are both in reverse order. zTo
|
||||
|
||||
+8
-8
@@ -105,7 +105,7 @@
|
||||
** memory. A "position" is an index of a token in the token stream
|
||||
** generated by the tokenizer, while an "offset" is a byte offset,
|
||||
** both based at 0. Note that POS_END and POS_COLUMN occur in the
|
||||
** same logical place as the position element, and act as sentinals
|
||||
** same logical place as the position element, and act as sentinels
|
||||
** ending a position list array.
|
||||
**
|
||||
** A DL_POSITIONS doclist omits the startOffset and endOffset
|
||||
@@ -2411,7 +2411,7 @@ static void fulltext_vtab_destroy(fulltext_vtab *v){
|
||||
** sqlite3IsIdChar[X] must be 1.
|
||||
**
|
||||
** Ticket #1066. the SQL standard does not allow '$' in the
|
||||
** middle of identfiers. But many SQL implementations do.
|
||||
** middle of identifiers. But many SQL implementations do.
|
||||
** SQLite will allow '$' in identifiers for compatibility.
|
||||
** But the feature is undocumented.
|
||||
*/
|
||||
@@ -2580,8 +2580,8 @@ static void dequoteString(char *z){
|
||||
**
|
||||
** Example:
|
||||
**
|
||||
** input: tokenize chinese ( 'simplifed' , 'mixed' )
|
||||
** output: chinese simplifed mixed
|
||||
** input: tokenize chinese ( 'simplified' , 'mixed' )
|
||||
** output: chinese simplified mixed
|
||||
**
|
||||
** Another example:
|
||||
**
|
||||
@@ -3523,7 +3523,7 @@ static int checkColumnSpecifier(
|
||||
|
||||
/*
|
||||
** Parse the text at pSegment[0..nSegment-1]. Add additional terms
|
||||
** to the query being assemblied in pQuery.
|
||||
** to the query being assembled in pQuery.
|
||||
**
|
||||
** inPhrase is true if pSegment[0..nSegement-1] is contained within
|
||||
** double-quotes. If inPhrase is true, then the first term
|
||||
@@ -3874,7 +3874,7 @@ static int fulltextColumn(sqlite3_vtab_cursor *pCursor,
|
||||
}
|
||||
|
||||
/* This is the xRowid method. The SQLite core calls this routine to
|
||||
** retrive the rowid for the current row of the result set. The
|
||||
** retrieve the rowid for the current row of the result set. The
|
||||
** rowid should be written to *pRowid.
|
||||
*/
|
||||
static int fulltextRowid(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){
|
||||
@@ -4648,7 +4648,7 @@ static int leafWriterRootInfo(fulltext_vtab *v, LeafWriter *pWriter,
|
||||
/* We must have flushed a leaf at some point. */
|
||||
assert( pWriter->has_parent );
|
||||
|
||||
/* Tenatively set the end leaf blockid as the end blockid. If the
|
||||
/* Tentatively set the end leaf blockid as the end blockid. If the
|
||||
** interior node can be returned inline, this will be the final
|
||||
** blockid, otherwise it will be overwritten by
|
||||
** interiorWriterRootInfo().
|
||||
@@ -6018,7 +6018,7 @@ static void snippetOffsetsFunc(
|
||||
** can merge all segments simultaneously. This version may be
|
||||
** somewhat less efficient than LeavesReader because it merges into an
|
||||
** accumulator rather than doing an N-way merge, but since segment
|
||||
** size grows exponentially (so segment count logrithmically) this is
|
||||
** size grows exponentially (so segment count logarithmically) this is
|
||||
** probably not an immediate problem.
|
||||
*/
|
||||
/* TODO(shess): Prove that assertion, or extend the merge code to
|
||||
|
||||
@@ -130,7 +130,7 @@ static int binCompare(const void *pKey1, int n1, const void *pKey2, int n2){
|
||||
/*
|
||||
** Return a pointer to the appropriate hash function given the key class.
|
||||
**
|
||||
** The C syntax in this function definition may be unfamilar to some
|
||||
** The C syntax in this function definition may be unfamiliar to some
|
||||
** programmers, so we provide the following additional explanation:
|
||||
**
|
||||
** The name of the function is "hashFunction". The function takes a
|
||||
@@ -189,7 +189,7 @@ static void insertElement(
|
||||
}
|
||||
|
||||
|
||||
/* Resize the hash table so that it cantains "new_size" buckets.
|
||||
/* Resize the hash table so that it contains "new_size" buckets.
|
||||
** "new_size" must be a power of 2. The hash table might fail
|
||||
** to resize if sqliteMalloc() fails.
|
||||
*/
|
||||
|
||||
@@ -145,7 +145,7 @@ static const char cType[] = {
|
||||
**
|
||||
** In these routine, the letters are in reverse order. So the 'y' rule
|
||||
** is that 'y' is a consonant unless it is followed by another
|
||||
** consonent.
|
||||
** consonant.
|
||||
*/
|
||||
static int isVowel(const char*);
|
||||
static int isConsonant(const char *z){
|
||||
@@ -241,7 +241,7 @@ static int doubleConsonant(const char *z){
|
||||
|
||||
/*
|
||||
** Return TRUE if the word ends with three letters which
|
||||
** are consonant-vowel-consonent and where the final consonant
|
||||
** are consonant-vowel-consonant and where the final consonant
|
||||
** is not 'w', 'x', or 'y'.
|
||||
**
|
||||
** The word is reversed here. So we are really checking the
|
||||
@@ -257,7 +257,7 @@ static int star_oh(const char *z){
|
||||
|
||||
/*
|
||||
** If the word ends with zFrom and xCond() is true for the stem
|
||||
** of the word that preceeds the zFrom ending, then change the
|
||||
** of the word that precedes the zFrom ending, then change the
|
||||
** ending to zTo.
|
||||
**
|
||||
** The input word *pz and zFrom are both in reverse order. zTo
|
||||
|
||||
@@ -65,7 +65,7 @@ proc section_comment {text} {
|
||||
|
||||
# Read the source file named $filename and write it into the
|
||||
# sqlite3.c output file. If any #include statements are seen,
|
||||
# process them approprately.
|
||||
# process them appropriately.
|
||||
#
|
||||
proc copy_file {filename} {
|
||||
global seen_hdr available_hdr out
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
If the left-hand-side of the MATCH operator is set to the name of the
|
||||
fts3 table, then by default the query may be matched against any column
|
||||
of the table. If it is set to a column name, then by default the query
|
||||
may only match the specified column. In both cases this may be overriden
|
||||
may only match the specified column. In both cases this may be overridden
|
||||
as part of the query text (see sections 2 and 3 below).
|
||||
|
||||
As of SQLite version 3.6.8, Fts3 supports two slightly different query
|
||||
@@ -62,20 +62,20 @@
|
||||
matches rows that contain both the "engineering" and "consultancy" tokens
|
||||
in the same column with not more than 10 other words between them. It does
|
||||
not matter which of the two terms occurs first in the document, only that
|
||||
they be seperated by only 10 tokens or less. The user may also specify
|
||||
they be separated by only 10 tokens or less. The user may also specify
|
||||
a different required proximity by adding "/N" immediately after the NEAR
|
||||
operator, where N is an integer. For example:
|
||||
|
||||
<col> MATCH 'engineering NEAR/5 consultancy'
|
||||
|
||||
searches for a row containing an instance of each specified token seperated
|
||||
searches for a row containing an instance of each specified token separated
|
||||
by not more than 5 other tokens. More than one NEAR operator can be used
|
||||
in as sequence. For example this query:
|
||||
|
||||
<col> MATCH 'reliable NEAR/2 engineering NEAR/5 consultancy'
|
||||
|
||||
searches for a row that contains an instance of the token "reliable"
|
||||
seperated by not more than two tokens from an instance of "engineering",
|
||||
separated by not more than two tokens from an instance of "engineering",
|
||||
which is in turn separated by not more than 5 other tokens from an
|
||||
instance of the term "consultancy". Phrases enclosed in quotes may
|
||||
also be used as arguments to the NEAR operator.
|
||||
@@ -146,7 +146,7 @@
|
||||
<col> MATCH '(hello world) OR (simple example)'
|
||||
|
||||
matches documents that contain both "hello" and "world", and documents
|
||||
that contain both "simple" and "example". It is not possible to forumlate
|
||||
that contain both "simple" and "example". It is not possible to formulate
|
||||
such a query using the standard syntax.
|
||||
|
||||
2) Instead of separating tokens and phrases by whitespace, an AND operator
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
4) Unlike in the standard syntax, where the OR operator has a higher
|
||||
precedence than the implicit AND operator, when using the enhanced
|
||||
syntax implicit and explict AND operators have a higher precedence
|
||||
syntax implicit and explicit AND operators have a higher precedence
|
||||
than OR operators. Using the enhanced syntax, the following two
|
||||
queries are equivalent:
|
||||
|
||||
|
||||
+4
-4
@@ -87,7 +87,7 @@
|
||||
** Here, array { X } means zero or more occurrences of X, adjacent in
|
||||
** memory. A "position" is an index of a token in the token stream
|
||||
** generated by the tokenizer. Note that POS_END and POS_COLUMN occur
|
||||
** in the same logical place as the position element, and act as sentinals
|
||||
** in the same logical place as the position element, and act as sentinels
|
||||
** ending a position list array. POS_END is 0. POS_COLUMN is 1.
|
||||
** The positions numbers are not stored literally but rather as two more
|
||||
** than the difference from the prior position, or the just the position plus
|
||||
@@ -2632,7 +2632,7 @@ static int fts3DoclistOrMerge(
|
||||
** sizes of the two inputs, plus enough space for exactly one of the input
|
||||
** docids to grow.
|
||||
**
|
||||
** A symetric argument may be made if the doclists are in descending
|
||||
** A symmetric argument may be made if the doclists are in descending
|
||||
** order.
|
||||
*/
|
||||
aOut = sqlite3_malloc64((i64)n1+n2+FTS3_VARINT_MAX-1+FTS3_BUFFER_PADDING);
|
||||
@@ -4654,7 +4654,7 @@ static int incrPhraseTokenNext(
|
||||
**
|
||||
** * does not contain any deferred tokens.
|
||||
**
|
||||
** Advance it to the next matching documnent in the database and populate
|
||||
** Advance it to the next matching document in the database and populate
|
||||
** the Fts3Doclist.pList and nList fields.
|
||||
**
|
||||
** If there is no "next" entry and no error occurs, then *pbEof is set to
|
||||
@@ -5664,7 +5664,7 @@ static int fts3EvalNext(Fts3Cursor *pCsr){
|
||||
}
|
||||
|
||||
/*
|
||||
** Restart interation for expression pExpr so that the next call to
|
||||
** Restart iteration for expression pExpr so that the next call to
|
||||
** fts3EvalNext() visits the first row. Do not allow incremental
|
||||
** loading or merging of phrase doclists for this iteration.
|
||||
**
|
||||
|
||||
+3
-3
@@ -27,7 +27,7 @@
|
||||
/*
|
||||
** FTS4 is really an extension for FTS3. It is enabled using the
|
||||
** SQLITE_ENABLE_FTS3 macro. But to avoid confusion we also all
|
||||
** the SQLITE_ENABLE_FTS4 macro to serve as an alisse for SQLITE_ENABLE_FTS3.
|
||||
** the SQLITE_ENABLE_FTS4 macro to serve as an alias for SQLITE_ENABLE_FTS3.
|
||||
*/
|
||||
#if defined(SQLITE_ENABLE_FTS4) && !defined(SQLITE_ENABLE_FTS3)
|
||||
# define SQLITE_ENABLE_FTS3
|
||||
@@ -132,7 +132,7 @@ SQLITE_EXTENSION_INIT3
|
||||
/*
|
||||
** The assert_fts3_nc() macro is similar to the assert() macro, except that it
|
||||
** is used for assert() conditions that are true only if it can be
|
||||
** guranteed that the database is not corrupt.
|
||||
** guaranteed that the database is not corrupt.
|
||||
*/
|
||||
#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
|
||||
extern int sqlite3_fts3_may_be_corrupt;
|
||||
@@ -354,7 +354,7 @@ struct Fts3Cursor {
|
||||
|
||||
/*
|
||||
** The Fts3Cursor.eSearch member is always set to one of the following.
|
||||
** Actualy, Fts3Cursor.eSearch can be greater than or equal to
|
||||
** Actually, Fts3Cursor.eSearch can be greater than or equal to
|
||||
** FTS3_FULLTEXT_SEARCH. If so, then Fts3Cursor.eSearch - 2 is the index
|
||||
** of the column to be searched. For example, in
|
||||
**
|
||||
|
||||
@@ -653,7 +653,7 @@ static int fts3ExprParse(
|
||||
|
||||
/* The isRequirePhrase variable is set to true if a phrase or
|
||||
** an expression contained in parenthesis is required. If a
|
||||
** binary operator (AND, OR, NOT or NEAR) is encounted when
|
||||
** binary operator (AND, OR, NOT or NEAR) is encountered when
|
||||
** isRequirePhrase is set, this is a syntax error.
|
||||
*/
|
||||
if( !isPhrase && isRequirePhrase ){
|
||||
|
||||
@@ -128,7 +128,7 @@ static int fts3BinCompare(const void *pKey1, int n1, const void *pKey2, int n2){
|
||||
/*
|
||||
** Return a pointer to the appropriate hash function given the key class.
|
||||
**
|
||||
** The C syntax in this function definition may be unfamilar to some
|
||||
** The C syntax in this function definition may be unfamiliar to some
|
||||
** programmers, so we provide the following additional explanation:
|
||||
**
|
||||
** The name of the function is "ftsHashFunction". The function takes a
|
||||
@@ -187,7 +187,7 @@ static void fts3HashInsertElement(
|
||||
}
|
||||
|
||||
|
||||
/* Resize the hash table so that it cantains "new_size" buckets.
|
||||
/* Resize the hash table so that it contains "new_size" buckets.
|
||||
** "new_size" must be a power of 2. The hash table might fail
|
||||
** to resize if sqliteMalloc() fails.
|
||||
**
|
||||
|
||||
@@ -144,7 +144,7 @@ static const char cType[] = {
|
||||
**
|
||||
** In these routine, the letters are in reverse order. So the 'y' rule
|
||||
** is that 'y' is a consonant unless it is followed by another
|
||||
** consonent.
|
||||
** consonant.
|
||||
*/
|
||||
static int isVowel(const char*);
|
||||
static int isConsonant(const char *z){
|
||||
@@ -240,7 +240,7 @@ static int doubleConsonant(const char *z){
|
||||
|
||||
/*
|
||||
** Return TRUE if the word ends with three letters which
|
||||
** are consonant-vowel-consonent and where the final consonant
|
||||
** are consonant-vowel-consonant and where the final consonant
|
||||
** is not 'w', 'x', or 'y'.
|
||||
**
|
||||
** The word is reversed here. So we are really checking the
|
||||
@@ -256,7 +256,7 @@ static int star_oh(const char *z){
|
||||
|
||||
/*
|
||||
** If the word ends with zFrom and xCond() is true for the stem
|
||||
** of the word that preceeds the zFrom ending, then change the
|
||||
** of the word that precedes the zFrom ending, then change the
|
||||
** ending to zTo.
|
||||
**
|
||||
** The input word *pz and zFrom are both in reverse order. zTo
|
||||
|
||||
@@ -606,7 +606,7 @@ static int fts3StringAppend(
|
||||
}
|
||||
|
||||
/* If there is insufficient space allocated at StrBuffer.z, use realloc()
|
||||
** to grow the buffer until so that it is big enough to accomadate the
|
||||
** to grow the buffer until so that it is big enough to accommodate the
|
||||
** appended data.
|
||||
*/
|
||||
if( pStr->n+nAppend+1>=pStr->nAlloc ){
|
||||
|
||||
@@ -156,7 +156,7 @@ int sqlite3FtsUnicodeIsalnum(int c){
|
||||
** in the ASCII range with a diacritic added, return the codepoint
|
||||
** of the ASCII letter only. For example, if passed 235 - "LATIN
|
||||
** SMALL LETTER E WITH DIAERESIS" - return 65 ("LATIN SMALL LETTER
|
||||
** E"). The resuls of passing a codepoint that corresponds to an
|
||||
** E"). The results of passing a codepoint that corresponds to an
|
||||
** uppercase letter are undefined.
|
||||
*/
|
||||
static int remove_diacritic(int c, int bComplex){
|
||||
|
||||
@@ -3939,7 +3939,7 @@ static int fts3IncrmergePush(
|
||||
**
|
||||
** It is assumed that the buffer associated with pNode is already large
|
||||
** enough to accommodate the new entry. The buffer associated with pPrev
|
||||
** is extended by this function if requrired.
|
||||
** is extended by this function if required.
|
||||
**
|
||||
** If an error (i.e. OOM condition) occurs, an SQLite error code is
|
||||
** returned. Otherwise, SQLITE_OK.
|
||||
@@ -4719,7 +4719,7 @@ static int fts3TruncateSegment(
|
||||
}
|
||||
|
||||
/*
|
||||
** This function is called after an incrmental-merge operation has run to
|
||||
** This function is called after an incremental-merge operation has run to
|
||||
** merge (or partially merge) two or more segments from absolute level
|
||||
** iAbsLevel.
|
||||
**
|
||||
@@ -5448,7 +5448,7 @@ void sqlite3Fts3FreeDeferredDoclists(Fts3Cursor *pCsr){
|
||||
}
|
||||
|
||||
/*
|
||||
** Free all entries in the pCsr->pDeffered list. Entries are added to
|
||||
** Free all entries in the pCsr->pDeferred list. Entries are added to
|
||||
** this list using sqlite3Fts3DeferToken().
|
||||
*/
|
||||
void sqlite3Fts3FreeDeferredTokens(Fts3Cursor *pCsr){
|
||||
@@ -5579,7 +5579,7 @@ int sqlite3Fts3DeferToken(
|
||||
/*
|
||||
** SQLite value pRowid contains the rowid of a row that may or may not be
|
||||
** present in the FTS3 table. If it is, delete it and adjust the contents
|
||||
** of subsiduary data structures accordingly.
|
||||
** of subsidiary data structures accordingly.
|
||||
*/
|
||||
static int fts3DeleteByRowid(
|
||||
Fts3Table *p,
|
||||
|
||||
@@ -119,4 +119,3 @@ puts " fts3speed_insert.sql"
|
||||
puts " fts3speed_select.sql"
|
||||
puts " fts3speed_select2.sql"
|
||||
puts " fts3speed_optimize.sql"
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ proc section_comment {text} {
|
||||
|
||||
# Read the source file named $filename and write it into the
|
||||
# sqlite3.c output file. If any #include statements are seen,
|
||||
# process them approprately.
|
||||
# process them appropriately.
|
||||
#
|
||||
proc copy_file {filename} {
|
||||
global seen_hdr available_hdr out
|
||||
|
||||
@@ -13,4 +13,3 @@ do
|
||||
echo -ne "$f: "
|
||||
gcov -b $f | grep Taken | sed 's/Taken at least once://'
|
||||
done
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ proc print_rd {map} {
|
||||
puts "** in the ASCII range with a diacritic added, return the codepoint"
|
||||
puts "** of the ASCII letter only. For example, if passed 235 - \"LATIN"
|
||||
puts "** SMALL LETTER E WITH DIAERESIS\" - return 65 (\"LATIN SMALL LETTER"
|
||||
puts "** E\"). The resuls of passing a codepoint that corresponds to an"
|
||||
puts "** E\"). The results of passing a codepoint that corresponds to an"
|
||||
puts "** uppercase letter are undefined."
|
||||
puts "*/"
|
||||
puts "static int ${::remove_diacritic}(int c, int bComplex)\{"
|
||||
@@ -889,7 +889,7 @@ proc print_test_main {} {
|
||||
puts "\}"
|
||||
}
|
||||
|
||||
# Proces the command line arguments. Exit early if they are not to
|
||||
# Process the command line arguments. Exit early if they are not to
|
||||
# our liking.
|
||||
#
|
||||
proc usage {} {
|
||||
|
||||
@@ -70,7 +70,7 @@ proc rd_load_unicodedata_text {zName} {
|
||||
if {[info exists tl_lookup_table($iCode)]} continue
|
||||
|
||||
# Check if this is an indirect mapping. If so, set bIndirect to true
|
||||
# and change $iAscii to the indirectly mappped ASCII character.
|
||||
# and change $iAscii to the indirectly mapped ASCII character.
|
||||
set bIndirect 0
|
||||
if {[info exists dia($iDia)] && [info exists mapping($iAscii)]} {
|
||||
set iAscii $mapping($iAscii)
|
||||
@@ -201,5 +201,3 @@ proc cc_load_unicodedata_text {zName} {
|
||||
close $fd
|
||||
set lRet
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -245,8 +245,3 @@ proc main {data} {
|
||||
main $data
|
||||
|
||||
set ::fts5_docs_output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ int sqlite3Fts5Corrupt(void);
|
||||
/*
|
||||
** The assert_nc() macro is similar to the assert() macro, except that it
|
||||
** is used for assert() conditions that are true only if it can be
|
||||
** guranteed that the database is not corrupt.
|
||||
** guaranteed that the database is not corrupt.
|
||||
*/
|
||||
#ifdef SQLITE_DEBUG
|
||||
extern int sqlite3_fts5_may_be_corrupt;
|
||||
|
||||
+1
-1
@@ -608,7 +608,7 @@ static int fts5Bm25GetData(
|
||||
** under consideration.
|
||||
**
|
||||
** The problem with this is that if (N < 2*nHit), the IDF is
|
||||
** negative. Which is undesirable. So the mimimum allowable IDF is
|
||||
** negative. Which is undesirable. So the minimum allowable IDF is
|
||||
** (1e-6) - roughly the same as a term that appears in just over
|
||||
** half of set of 5,000,000 documents. */
|
||||
double idf = log( (nRow - nHit + 0.5) / (nHit + 0.5) );
|
||||
|
||||
@@ -300,7 +300,7 @@ char *sqlite3Fts5Strndup(int *pRc, const char *pIn, int nIn){
|
||||
** * The 52 upper and lower case ASCII characters, and
|
||||
** * The 10 integer ASCII characters.
|
||||
** * The underscore character "_" (0x5F).
|
||||
** * The unicode "subsitute" character (0x1A).
|
||||
** * The unicode "substitute" character (0x1A).
|
||||
*/
|
||||
int sqlite3Fts5IsBareword(char t){
|
||||
u8 aBareword[128] = {
|
||||
|
||||
@@ -2009,7 +2009,7 @@ static void fts5MergeColset(Fts5Colset *pColset, Fts5Colset *pMerge){
|
||||
|
||||
/*
|
||||
** Recursively apply colset pColset to expression node pNode and all of
|
||||
** its decendents. If (*ppFree) is not NULL, it contains a spare copy
|
||||
** its descendents. If (*ppFree) is not NULL, it contains a spare copy
|
||||
** of pColset. This function may use the spare copy and set (*ppFree) to
|
||||
** zero, or it may create copies of pColset using fts5CloneColset().
|
||||
*/
|
||||
|
||||
@@ -20,7 +20,7 @@ typedef struct Fts5HashEntry Fts5HashEntry;
|
||||
|
||||
/*
|
||||
** This file contains the implementation of an in-memory hash table used
|
||||
** to accumuluate "term -> doclist" content before it is flused to a level-0
|
||||
** to accumulate "term -> doclist" content before it is flused to a level-0
|
||||
** segment.
|
||||
*/
|
||||
|
||||
@@ -72,7 +72,7 @@ struct Fts5HashEntry {
|
||||
};
|
||||
|
||||
/*
|
||||
** Eqivalent to:
|
||||
** Equivalent to:
|
||||
**
|
||||
** char *fts5EntryKey(Fts5HashEntry *pEntry){ return zKey; }
|
||||
*/
|
||||
|
||||
@@ -4138,7 +4138,7 @@ static void fts5TrimSegments(Fts5Index *p, Fts5Iter *pIter){
|
||||
if( pSeg->pSeg==0 ){
|
||||
/* no-op */
|
||||
}else if( pSeg->pLeaf==0 ){
|
||||
/* All keys from this input segment have been transfered to the output.
|
||||
/* All keys from this input segment have been transferred to the output.
|
||||
** Set both the first and last page-numbers to 0 to indicate that the
|
||||
** segment is now empty. */
|
||||
pSeg->pSeg->pgnoLast = 0;
|
||||
@@ -4209,7 +4209,7 @@ static void fts5MergeChunkCallback(
|
||||
*/
|
||||
static void fts5IndexMergeLevel(
|
||||
Fts5Index *p, /* FTS5 backend object */
|
||||
Fts5Structure **ppStruct, /* IN/OUT: Stucture of index */
|
||||
Fts5Structure **ppStruct, /* IN/OUT: Structure of index */
|
||||
int iLvl, /* Level to read input from */
|
||||
int *pnRem /* Write up to this many output leaves */
|
||||
){
|
||||
@@ -6170,7 +6170,7 @@ static void fts5DecodeRowid(
|
||||
}
|
||||
|
||||
static void fts5DebugRowid(int *pRc, Fts5Buffer *pBuf, i64 iKey){
|
||||
int iSegid, iHeight, iPgno, bDlidx; /* Rowid compenents */
|
||||
int iSegid, iHeight, iPgno, bDlidx; /* Rowid components */
|
||||
fts5DecodeRowid(iKey, &iSegid, &bDlidx, &iHeight, &iPgno);
|
||||
|
||||
if( iSegid==0 ){
|
||||
|
||||
@@ -1631,7 +1631,7 @@ static int fts5UpdateMethod(
|
||||
assert( nArg!=1 || eType0==SQLITE_INTEGER );
|
||||
|
||||
/* Filter out attempts to run UPDATE or DELETE on contentless tables.
|
||||
** This is not suported. */
|
||||
** This is not supported. */
|
||||
if( eType0==SQLITE_INTEGER && fts5IsContentless(pTab) ){
|
||||
pTab->p.base.zErrMsg = sqlite3_mprintf(
|
||||
"cannot %s contentless fts5 table: %s",
|
||||
|
||||
@@ -387,7 +387,7 @@ static void fts5MatchinfoFunc(
|
||||
if( rc!=SQLITE_OK ){
|
||||
sqlite3_result_error_code(pCtx, rc);
|
||||
}else{
|
||||
/* No errors has occured, so return a copy of the array of integers. */
|
||||
/* No errors has occurred, so return a copy of the array of integers. */
|
||||
int nByte = p->nRet * sizeof(u32);
|
||||
sqlite3_result_blob(pCtx, (void*)p->aRet, nByte, SQLITE_TRANSIENT);
|
||||
}
|
||||
|
||||
@@ -663,7 +663,7 @@ static int fts5PorterGobbleVC(char *zStem, int nStem, int bPrevCons){
|
||||
if( 0==(bCons = !fts5PorterIsVowel(zStem[i], bCons)) ) break;
|
||||
}
|
||||
|
||||
/* Scan for a consonent */
|
||||
/* Scan for a consonant */
|
||||
for(i++; i<nStem; i++){
|
||||
if( (bCons = !fts5PorterIsVowel(zStem[i], bCons)) ) return i+1;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
** in the ASCII range with a diacritic added, return the codepoint
|
||||
** of the ASCII letter only. For example, if passed 235 - "LATIN
|
||||
** SMALL LETTER E WITH DIAERESIS" - return 65 ("LATIN SMALL LETTER
|
||||
** E"). The resuls of passing a codepoint that corresponds to an
|
||||
** E"). The results of passing a codepoint that corresponds to an
|
||||
** uppercase letter are undefined.
|
||||
*/
|
||||
static int fts5_remove_diacritic(int c, int bComplex){
|
||||
|
||||
@@ -62,7 +62,7 @@ struct Fts5VocabCursor {
|
||||
Fts5IndexIter *pIter; /* Term/rowid iterator object */
|
||||
|
||||
int nLeTerm; /* Size of zLeTerm in bytes */
|
||||
char *zLeTerm; /* (term <= $zLeTerm) paramater, or NULL */
|
||||
char *zLeTerm; /* (term <= $zLeTerm) parameter, or NULL */
|
||||
|
||||
/* These are used by 'col' tables only */
|
||||
int iCol;
|
||||
|
||||
@@ -217,6 +217,3 @@ puts [string trim {
|
||||
***************************************************************************
|
||||
**************************************************************************/
|
||||
}]
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -644,4 +644,3 @@ proc fts5_tclnum_register {db} {
|
||||
#
|
||||
# End of tokenizer code.
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -308,4 +308,3 @@ do_catchsql_test 10.1.4 {
|
||||
} {1 {unable to use function firstcol in the requested context}}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -294,4 +294,3 @@ do_catchsql_test 7.2.5 {
|
||||
} {1 {recursively defined fts5 content table}}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -10326,4 +10326,3 @@ do_catchsql_test 69.2 {
|
||||
|
||||
sqlite3_fts5_may_be_corrupt 0
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -58,4 +58,3 @@ for {set j 1000} {$j <= 5000} {incr j 1000} {
|
||||
|
||||
sqlite3_fts5_may_be_corrupt 0
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -64,4 +64,3 @@ foreach {tn sql} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -324,4 +324,3 @@ do_execsql_test 12.3 {
|
||||
} {3 4 b b}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -96,4 +96,3 @@ do_catchsql_test 2.1.2 {
|
||||
} {1 {fts5: syntax error near "NOT"}}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -82,4 +82,3 @@ ifcapable fts3 {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ do_execsql_test 3.0 {
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Test that a crash occuring when the second or subsequent tokens in a
|
||||
# Test that a crash occurring when the second or subsequent tokens in a
|
||||
# phrase matched zero rows has been fixed.
|
||||
#
|
||||
do_execsql_test 4.0 {
|
||||
|
||||
@@ -62,4 +62,3 @@ foreach {tn q res1 res2} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -60,5 +60,3 @@ if {[regexp matchinfo $sql]} {
|
||||
for {set i 1} {$i < $nRepeat} {incr i} {
|
||||
db eval $sql
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -224,6 +224,3 @@ if {$A(trans)} { db eval BEGIN }
|
||||
db eval $sql
|
||||
}
|
||||
if {$A(trans)} { db eval COMMIT }
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -10,11 +10,11 @@ proc loadfile {f} {
|
||||
set ::nRow 0
|
||||
set ::nRowPerDot 1000
|
||||
|
||||
proc load_hierachy {dir} {
|
||||
proc load_hierarchy {dir} {
|
||||
foreach f [glob -nocomplain -dir $dir *] {
|
||||
if {$::O(limit) && $::nRow>=$::O(limit)} break
|
||||
if {[file isdir $f]} {
|
||||
load_hierachy $f
|
||||
load_hierarchy $f
|
||||
} else {
|
||||
db eval { INSERT INTO t1 VALUES($f, loadfile($f)) }
|
||||
incr ::nRow
|
||||
@@ -164,9 +164,6 @@ db eval BEGIN
|
||||
} else {
|
||||
}
|
||||
}
|
||||
load_hierachy [lindex $argv end]
|
||||
load_hierarchy [lindex $argv end]
|
||||
db eval COMMIT
|
||||
puts ""
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -90,8 +90,3 @@ if {$O(segments)} {
|
||||
puts $d
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ SQLite. Documentation follows.
|
||||
1.4 SQL REGEXP Operator
|
||||
|
||||
This extension provides an implementation of the SQL binary
|
||||
comparision operator "REGEXP", based on the regular expression functions
|
||||
comparison operator "REGEXP", based on the regular expression functions
|
||||
provided by the ICU library. The syntax of the operator is as described
|
||||
in SQLite documentation:
|
||||
|
||||
|
||||
@@ -557,7 +557,7 @@ static void mt1Main(ThreadSet *pThreadSet, int iThread, void *pCtx){
|
||||
}
|
||||
testClose(&pDb);
|
||||
|
||||
/* If an error has occured, set the thread error code and the threadset
|
||||
/* If an error has occurred, set the thread error code and the threadset
|
||||
** halt flag to tell the other test threads to halt. Otherwise, set the
|
||||
** thread error code to 0 and post a message with the number of read
|
||||
** and write operations completed. */
|
||||
|
||||
+1
-1
@@ -568,7 +568,7 @@ struct FreelistEntry {
|
||||
/*
|
||||
** A snapshot of a database. A snapshot contains all the information required
|
||||
** to read or write a database file on disk. See the description of struct
|
||||
** Database below for futher details.
|
||||
** Database below for further details.
|
||||
*/
|
||||
struct Snapshot {
|
||||
Database *pDatabase; /* Database this snapshot belongs to */
|
||||
|
||||
+1
-1
@@ -169,7 +169,7 @@
|
||||
** The argument to this macro must be of type u32. On a little-endian
|
||||
** architecture, it returns the u32 value that results from interpreting
|
||||
** the 4 bytes as a big-endian value. On a big-endian architecture, it
|
||||
** returns the value that would be produced by intepreting the 4 bytes
|
||||
** returns the value that would be produced by interpreting the 4 bytes
|
||||
** of the input value as a little-endian integer.
|
||||
*/
|
||||
#define BYTESWAP32(x) ( \
|
||||
|
||||
+2
-2
@@ -647,7 +647,7 @@ int lsmFsOpen(
|
||||
memcpy(&pFS->zLog[nDb], "-log", 5);
|
||||
|
||||
/* Allocate the hash-table here. At some point, it should be changed
|
||||
** so that it can grow dynamicly. */
|
||||
** so that it can grow dynamically. */
|
||||
pFS->nCacheMax = 2048*1024 / pFS->nPagesize;
|
||||
pFS->nHash = 4096;
|
||||
pFS->apHash = lsmMallocZeroRc(pDb->pEnv, sizeof(Page *) * pFS->nHash, &rc);
|
||||
@@ -793,7 +793,7 @@ void lsmFsClose(FileSystem *pFS){
|
||||
**
|
||||
** This function returns a pointer to an object that can be linked into
|
||||
** the list described above. The returned object now 'owns' the database
|
||||
** file descriptr, so that when the FileSystem object is destroyed, it
|
||||
** file descriptor, so that when the FileSystem object is destroyed, it
|
||||
** will not be closed.
|
||||
**
|
||||
** This function may be called at most once in the life-time of a
|
||||
|
||||
+1
-1
@@ -758,7 +758,7 @@ void lsmLogTell(
|
||||
}
|
||||
|
||||
/*
|
||||
** Seek (rewind) back to the log file offset stored by an ealier call to
|
||||
** Seek (rewind) back to the log file offset stored by an earlier call to
|
||||
** lsmLogTell() in *pMark.
|
||||
*/
|
||||
void lsmLogSeek(
|
||||
|
||||
+1
-1
@@ -771,7 +771,7 @@ int lsm_csr_open(lsm_db *pDb, lsm_cursor **ppCsr){
|
||||
rc = lsmMCursorNew(pDb, &pCsr);
|
||||
}
|
||||
|
||||
/* If an error has occured, set the output to NULL and delete any partially
|
||||
/* If an error has occurred, set the output to NULL and delete any partially
|
||||
** allocated cursor. If this means there are no open cursors, release the
|
||||
** client snapshot. */
|
||||
if( rc!=LSM_OK ){
|
||||
|
||||
@@ -1963,7 +1963,7 @@ int lsm_checkpoint(lsm_db *pDb, int *pnKB){
|
||||
rc = lsmCheckpointWrite(pDb, &nWrite);
|
||||
|
||||
/* If required, calculate the output variable (KB of data checkpointed).
|
||||
** Set it to zero if an error occured. */
|
||||
** Set it to zero if an error occurred. */
|
||||
if( pnKB ){
|
||||
int nKB = 0;
|
||||
if( rc==LSM_OK && nWrite ){
|
||||
|
||||
@@ -2652,7 +2652,7 @@ int lsmSortedLoadFreelist(
|
||||
void **ppVal, /* OUT: Blob containing LSM free-list */
|
||||
int *pnVal /* OUT: Size of *ppVal blob in bytes */
|
||||
){
|
||||
MultiCursor *pCsr; /* Cursor used to retreive free-list */
|
||||
MultiCursor *pCsr; /* Cursor used to retrieve free-list */
|
||||
int rc = LSM_OK; /* Return Code */
|
||||
|
||||
assert( pDb->pWorker );
|
||||
@@ -3584,7 +3584,7 @@ static int mergeWorkerBtreeWrite(
|
||||
Hierarchy *p = &pMW->hier;
|
||||
lsm_db *pDb = pMW->pDb; /* Database handle */
|
||||
int rc = LSM_OK; /* Return Code */
|
||||
int iLevel; /* Level of b-tree hierachy to write to */
|
||||
int iLevel; /* Level of b-tree hierarchy to write to */
|
||||
int nData; /* Size of aData[] in bytes */
|
||||
u8 *aData; /* Page data for level iLevel */
|
||||
int iOff; /* Offset on b-tree page to write record to */
|
||||
@@ -3984,7 +3984,7 @@ static int mergeWorkerWrite(
|
||||
|
||||
/* Figure out how much space is required by the new record. The space
|
||||
** required is divided into two sections: the header and the body. The
|
||||
** header consists of the intial varint fields. The body are the blobs
|
||||
** header consists of the initial varint fields. The body are the blobs
|
||||
** of data that correspond to the key and value data. The entire header
|
||||
** must be stored on the page. The body may overflow onto the next and
|
||||
** subsequent pages.
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@
|
||||
** There is no content for NULL or type-0 integers. For BLOB and TEXT
|
||||
** values, the content is the blob data or the UTF-8 text data. For
|
||||
** non-negative integers X, the content is a variable-length integer X*2.
|
||||
** For negative integers Y, the content is varaible-length integer (1-Y)*2+1.
|
||||
** For negative integers Y, the content is variable-length integer (1-Y)*2+1.
|
||||
** For FLOAT values, the content is the IEEE754 floating point value in
|
||||
** native byte-order. This means that FLOAT values will be corrupted when
|
||||
** database file is moved between big-endian and little-endian machines.
|
||||
|
||||
+1
-1
@@ -484,7 +484,7 @@ struct amatch_rule {
|
||||
amatch_cost rCost; /* Cost of this transformation */
|
||||
amatch_langid iLang; /* The langauge to which this rule belongs */
|
||||
amatch_len nFrom, nTo; /* Length of the zFrom and zTo strings */
|
||||
char zTo[4]; /* Tranform to V.W value (extra space appended) */
|
||||
char zTo[4]; /* Transform to V.W value (extra space appended) */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
** USAGE EXAMPLES:
|
||||
**
|
||||
** Show the table btrees in a schema order with the tables with the most
|
||||
** rows occuring first:
|
||||
** rows occurring first:
|
||||
**
|
||||
** SELECT name, nEntry
|
||||
** FROM sqlite_btreeinfo
|
||||
@@ -101,7 +101,7 @@ struct BinfoCursor {
|
||||
/* The sqlite_btreeinfo table */
|
||||
struct BinfoTable {
|
||||
sqlite3_vtab base; /* Base class. Must be first */
|
||||
sqlite3 *db; /* The databse connection */
|
||||
sqlite3 *db; /* The database connection */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@
|
||||
**
|
||||
** sqlite3 *db;
|
||||
** sqlite3_open(":memory:", &db);
|
||||
** sqlite3_load_extention(db, "./cksumvfs");
|
||||
** sqlite3_load_extension(db, "./cksumvfs");
|
||||
** sqlite3_close(db);
|
||||
**
|
||||
** If this extension is compiled with -DSQLITE_CKSUMVFS_STATIC and
|
||||
|
||||
+3
-3
@@ -314,7 +314,7 @@ typedef struct CsvTable {
|
||||
} CsvTable;
|
||||
|
||||
/* Allowed values for tstFlags */
|
||||
#define CSVTEST_FIDX 0x0001 /* Pretend that constrained searchs cost less*/
|
||||
#define CSVTEST_FIDX 0x0001 /* Pretend that constrained searches cost less*/
|
||||
|
||||
/* A cursor for the CSV virtual table */
|
||||
typedef struct CsvCursor {
|
||||
@@ -393,7 +393,7 @@ static const char *csv_parameter(const char *zTag, int nTag, const char *z){
|
||||
static int csv_string_parameter(
|
||||
CsvReader *p, /* Leave the error message here, if there is one */
|
||||
const char *zParam, /* Parameter we are checking for */
|
||||
const char *zArg, /* Raw text of the virtual table argment */
|
||||
const char *zArg, /* Raw text of the virtual table argument */
|
||||
char **pzVal /* Write the dequoted string value here */
|
||||
){
|
||||
const char *zValue;
|
||||
@@ -839,7 +839,7 @@ static int csvtabBestIndex(
|
||||
if( (((CsvTable*)tab)->tstFlags & CSVTEST_FIDX)!=0 ){
|
||||
/* The usual (and sensible) case is to always do a full table scan.
|
||||
** The code in this branch only runs when testflags=1. This code
|
||||
** generates an artifical and unrealistic plan which is useful
|
||||
** generates an artificial and unrealistic plan which is useful
|
||||
** for testing virtual table logic but is not helpful to real applications.
|
||||
**
|
||||
** Any ==, LIKE, or GLOB constraint is marked as usable by the virtual
|
||||
|
||||
+1
-1
@@ -226,7 +226,7 @@ static char **tableColumnList(DState *p, const char *zTab){
|
||||
*/
|
||||
if( isIPK ){
|
||||
/* If a single PRIMARY KEY column with type INTEGER was seen, then it
|
||||
** might be an alise for the ROWID. But it might also be a WITHOUT ROWID
|
||||
** might be an alias for the ROWID. But it might also be a WITHOUT ROWID
|
||||
** table or a INTEGER PRIMARY KEY DESC column, neither of which are
|
||||
** ROWID aliases. To distinguish these cases, check to see if
|
||||
** there is a "pk" entry in "PRAGMA index_list". There will be
|
||||
|
||||
+1
-1
@@ -467,7 +467,7 @@ static void decimalSubFunc(
|
||||
decimal_free(pB);
|
||||
}
|
||||
|
||||
/* Aggregate funcion: decimal_sum(X)
|
||||
/* Aggregate function: decimal_sum(X)
|
||||
**
|
||||
** Works like sum() except that it uses decimal arithmetic for unlimited
|
||||
** precision.
|
||||
|
||||
+1
-1
@@ -501,7 +501,7 @@ static void writefileFunc(
|
||||
/*
|
||||
** SQL function: lsmode(MODE)
|
||||
**
|
||||
** Given a numberic st_mode from stat(), convert it into a human-readable
|
||||
** Given a numeric st_mode from stat(), convert it into a human-readable
|
||||
** text string in the style of "ls -l".
|
||||
*/
|
||||
static void lsModeFunc(
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@
|
||||
** LIMIT 20
|
||||
**
|
||||
** The query above gives the 20 closest words to the $word being tested.
|
||||
** (Note that for good performance, the vocubulary.w column should be
|
||||
** (Note that for good performance, the vocabulary.w column should be
|
||||
** indexed.)
|
||||
**
|
||||
** A similar query can be used to find all words in the dictionary that
|
||||
|
||||
+2
-2
@@ -73,13 +73,13 @@
|
||||
** SELECT decimal_mul(ieee754_mantissa(c.n),pow2.v)
|
||||
** FROM pow2, c WHERE pow2.x=ieee754_exponent(c.n);
|
||||
**
|
||||
** Here is a query to show various boundry values for the binary64
|
||||
** Here is a query to show various boundary values for the binary64
|
||||
** number format:
|
||||
**
|
||||
** WITH c(name,bin) AS (VALUES
|
||||
** ('minimum positive value', x'0000000000000001'),
|
||||
** ('maximum subnormal value', x'000fffffffffffff'),
|
||||
** ('mininum positive nornal value', x'0010000000000000'),
|
||||
** ('minimum positive normal value', x'0010000000000000'),
|
||||
** ('maximum value', x'7fefffffffffffff'))
|
||||
** SELECT c.name, decimal_mul(ieee754_mantissa(c.bin),pow2.v)
|
||||
** FROM pow2, c WHERE pow2.x=ieee754_exponent(c.bin);
|
||||
|
||||
+1
-1
@@ -1951,7 +1951,7 @@ static void jsonGroupInverse(
|
||||
pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
|
||||
#ifdef NEVER
|
||||
/* pStr is always non-NULL since jsonArrayStep() or jsonObjectStep() will
|
||||
** always have been called to initalize it */
|
||||
** always have been called to initialize it */
|
||||
if( NEVER(!pStr) ) return;
|
||||
#endif
|
||||
z = pStr->zBuf;
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
**
|
||||
** Only the first three arguments are required. If the C parameter is
|
||||
** omitted or is NULL or is an empty string, then the default collating
|
||||
** sequence of T.F is used for comparision. If the W parameter is omitted
|
||||
** sequence of T.F is used for comparison. If the W parameter is omitted
|
||||
** or is NULL or is an empty string, then no filtering of the output is
|
||||
** done.
|
||||
**
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@
|
||||
** The sha1(X) function computes the SHA1 hash of the input X, or NULL if
|
||||
** X is NULL.
|
||||
**
|
||||
** The sha1_query(Y) function evalutes all queries in the SQL statements of Y
|
||||
** The sha1_query(Y) function evaluates all queries in the SQL statements of Y
|
||||
** and returns a hash of their results.
|
||||
*/
|
||||
#include "sqlite3ext.h"
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
** The sha3(X) function computes the SHA3 hash of the input X, or NULL if
|
||||
** X is NULL.
|
||||
**
|
||||
** The sha3_query(Y) function evalutes all queries in the SQL statements of Y
|
||||
** The sha3_query(Y) function evaluates all queries in the SQL statements of Y
|
||||
** and returns a hash of their results.
|
||||
**
|
||||
** The SIZE argument is optional. If omitted, the SHA3-256 hash algorithm
|
||||
@@ -571,7 +571,7 @@ static void hash_step_vformat(
|
||||
** For each SQL statement in the X input, there is one S segment. Each
|
||||
** S segment is followed by zero or more R segments, one for each row in the
|
||||
** result set. After each R, there are one or more N, I, F, B, or T segments,
|
||||
** one for each column in the result set. Segments are concatentated directly
|
||||
** one for each column in the result set. Segments are concatenated directly
|
||||
** with no delimiters of any kind.
|
||||
*/
|
||||
static void sha3QueryFunc(
|
||||
|
||||
+4
-4
@@ -336,7 +336,7 @@ static int substituteCost(char cPrev, char cFrom, char cTo){
|
||||
/* Convert from one consonant to another, but in a different class */
|
||||
return 75;
|
||||
}
|
||||
/* Any other subsitution */
|
||||
/* Any other substitution */
|
||||
return 100;
|
||||
}
|
||||
|
||||
@@ -862,7 +862,7 @@ static int matchFrom(EditDist3Cost *p, const char *z, int n){
|
||||
static int matchFromTo(
|
||||
EditDist3FromString *pStr, /* Left hand string */
|
||||
int n1, /* Index of comparison character on the left */
|
||||
const char *z2, /* Right-handl comparison character */
|
||||
const char *z2, /* Right-hand comparison character */
|
||||
int n2 /* Bytes remaining in z2[] */
|
||||
){
|
||||
int b1 = pStr->a[n1].nByte;
|
||||
@@ -874,7 +874,7 @@ static int matchFromTo(
|
||||
}
|
||||
|
||||
/*
|
||||
** Delete an EditDist3FromString objecct
|
||||
** Delete an EditDist3FromString object
|
||||
*/
|
||||
static void editDist3FromStringDelete(EditDist3FromString *p){
|
||||
int i;
|
||||
@@ -2365,7 +2365,7 @@ static int SQLITE_CDECL spellfix1RowCompare(const void *A, const void *B){
|
||||
*/
|
||||
typedef struct MatchQuery {
|
||||
spellfix1_cursor *pCur; /* The cursor being queried */
|
||||
sqlite3_stmt *pStmt; /* shadow table query statment */
|
||||
sqlite3_stmt *pStmt; /* shadow table query statement */
|
||||
char zHash[SPELLFIX_MX_HASH]; /* The current phonehash for zPattern */
|
||||
const char *zPattern; /* Transliterated input string */
|
||||
int nPattern; /* Length of zPattern */
|
||||
|
||||
+1
-1
@@ -346,7 +346,7 @@ totype_atof_calc:
|
||||
/* store the result */
|
||||
*pResult = result;
|
||||
|
||||
/* return true if number and no extra non-whitespace chracters after */
|
||||
/* return true if number and no extra non-whitespace characters after */
|
||||
return z>=zEnd && nDigits>0 && eValid && nonNum==0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
** of digits compare in numeric order.
|
||||
**
|
||||
** * Leading zeros are handled properly, in the sense that
|
||||
** they do not mess of the maginitude comparison of embedded
|
||||
** they do not mess of the magnitude comparison of embedded
|
||||
** strings of digits. "x00123y" is equal to "x123y".
|
||||
**
|
||||
** * Only unsigned integers are recognized. Plus and minus
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
**
|
||||
** CREATE VIRTUAL TABLE <name> USING unionvtab(<sql-statement>);
|
||||
**
|
||||
** The implementation evalutes <sql statement> whenever a unionvtab virtual
|
||||
** The implementation evaluates <sql statement> whenever a unionvtab virtual
|
||||
** table is created or opened. It should return one row for each source
|
||||
** database table. The four columns required of each row are:
|
||||
**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user