better-sqlite3-multiple-ciphers 11.1.2 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -17,10 +17,10 @@ The fastest and simplest library for SQLite3 in Node.js. This particular fork su
17
17
  ## Current versions
18
18
 
19
19
  - ### Stable
20
- - **better-sqlite3-multiple-ciphers** - [`11.1.2`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers/releases/tag/v11.1.2)
21
- - **better-sqlite3** - [`11.1.2`](https://github.com/JoshuaWise/better-sqlite3/releases/tag/v11.1.2)
22
- - **SQLite** - [`3.46.0`](https://www.sqlite.org/releaselog/3_46_0.html)
23
- - **SQLite3 Multiple Ciphers** - [`1.8.6`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.8.6)
20
+ - **better-sqlite3-multiple-ciphers** - [`11.3.0`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers/releases/tag/v11.3.0)
21
+ - **better-sqlite3** - [`11.3.0`](https://github.com/JoshuaWise/better-sqlite3/releases/tag/v11.3.0)
22
+ - **SQLite** - [`3.46.1`](https://www.sqlite.org/releaselog/3_46_1.html)
23
+ - **SQLite3 Multiple Ciphers** - [`1.8.7`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.8.7)
24
24
 
25
25
  - ### Beta
26
26
  - **better-sqlite3-multiple-ciphers** - [`11.0.0-beta.0`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers/releases/tag/v11.0.0-beta.0)
@@ -38,7 +38,7 @@ The fastest and simplest library for SQLite3 in Node.js. This particular fork su
38
38
 
39
39
  Also head over to [SQLite3MultipleCiphers](https://github.com/utelle/SQLite3MultipleCiphers) repo and give some support to the developer to keep this very useful extension alive.
40
40
 
41
- You can also support me (the maintainer of this fork) by buying me a coffee. 😊
41
+ You can also support me (the author/maintainer of this fork) by buying me a coffee. 😊
42
42
 
43
43
  [![ko-fi](https://i.ibb.co/QmQknmc/ko-fi.png)](https://ko-fi.variatix.net/)
44
44
 
package/binding.gyp CHANGED
@@ -9,17 +9,17 @@
9
9
  'target_name': 'better_sqlite3',
10
10
  'dependencies': ['deps/sqlite3.gyp:sqlite3'],
11
11
  'sources': ['src/better_sqlite3.cpp'],
12
- 'cflags_cc': ['-std=c++17'],
12
+ 'cflags_cc': ['-std=c++20'],
13
13
  'xcode_settings': {
14
- 'OTHER_CPLUSPLUSFLAGS': ['-std=c++17', '-stdlib=libc++'],
14
+ 'OTHER_CPLUSPLUSFLAGS': ['-std=c++20', '-stdlib=libc++'],
15
15
  'OTHER_LDFLAGS': ['-framework Security'],
16
16
  },
17
17
  'msvs_settings': {
18
18
  'VCCLCompilerTool': {
19
19
  'AdditionalOptions': [
20
- '/std:c++17'
21
- ]
22
- }
20
+ '/std:c++20',
21
+ ],
22
+ },
23
23
  },
24
24
  'conditions': [
25
25
  ['OS=="linux"', {
package/deps/defines.gypi CHANGED
@@ -16,6 +16,7 @@
16
16
  'SQLITE_DEFAULT_WAL_SYNCHRONOUS=1',
17
17
  'SQLITE_DQS=0',
18
18
  'SQLITE_ENABLE_COLUMN_METADATA',
19
+ 'SQLITE_ENABLE_DBSTAT_VTAB',
19
20
  'SQLITE_ENABLE_DESERIALIZE',
20
21
  'SQLITE_ENABLE_FTS3',
21
22
  'SQLITE_ENABLE_FTS3_PARENTHESIS',
package/deps/download.sh CHANGED
@@ -1,112 +1,113 @@
1
- #!/usr/bin/env bash
2
-
3
- # ===
4
- # This script defines and generates the bundled SQLite3 unit (sqlite3.c).
5
- #
6
- # The following steps are taken:
7
- # 1. populate the shell environment with the defined compile-time options.
8
- # 2. download and extract the SQLite3 source code into a temporary directory.
9
- # 3. run "sh configure" and "make sqlite3.c" within the source directory.
10
- # 4. copy the generated amalgamation into the output directory (./sqlite3).
11
- # 5. export the defined compile-time options to a gyp file (./defines.gypi).
12
- # 6. update the docs (../docs/compilation.md) with details of this distribution.
13
- #
14
- # When a user builds better-sqlite3, the following steps are taken:
15
- # 1. node-gyp loads the previously exported compile-time options (defines.gypi).
16
- # 2. the copy.js script copies the bundled amalgamation into the build folder.
17
- # 3. node-gyp compiles the copied sqlite3.c along with better_sqlite3.cpp.
18
- # 4. node-gyp links the two resulting binaries to generate better_sqlite3.node.
19
- # ===
20
-
21
- YEAR="2022"
22
- VERSION="3380200"
23
-
24
- # Defines below are sorted alphabetically
25
- DEFINES="
26
- HAVE_INT16_T=1
27
- HAVE_INT32_T=1
28
- HAVE_INT8_T=1
29
- HAVE_STDINT_H=1
30
- HAVE_UINT16_T=1
31
- HAVE_UINT32_T=1
32
- HAVE_UINT8_T=1
33
- SQLITE_DEFAULT_CACHE_SIZE=-16000
34
- SQLITE_DEFAULT_FOREIGN_KEYS=1
35
- SQLITE_DEFAULT_MEMSTATUS=0
36
- SQLITE_DEFAULT_WAL_SYNCHRONOUS=1
37
- SQLITE_DQS=0
38
- SQLITE_ENABLE_COLUMN_METADATA
39
- SQLITE_ENABLE_DESERIALIZE
40
- SQLITE_ENABLE_FTS3
41
- SQLITE_ENABLE_FTS3_PARENTHESIS
42
- SQLITE_ENABLE_FTS4
43
- SQLITE_ENABLE_FTS5
44
- SQLITE_ENABLE_GEOPOLY
45
- SQLITE_ENABLE_JSON1
46
- SQLITE_ENABLE_MATH_FUNCTIONS
47
- SQLITE_ENABLE_RTREE
48
- SQLITE_ENABLE_STAT4
49
- SQLITE_ENABLE_UPDATE_DELETE_LIMIT
50
- SQLITE_LIKE_DOESNT_MATCH_BLOBS
51
- SQLITE_OMIT_DEPRECATED
52
- SQLITE_OMIT_PROGRESS_CALLBACK
53
- SQLITE_OMIT_SHARED_CACHE
54
- SQLITE_OMIT_TCL_VARIABLE
55
- SQLITE_SOUNDEX
56
- SQLITE_THREADSAFE=2
57
- SQLITE_TRACE_SIZE_LIMIT=32
58
- SQLITE_USER_AUTHENTICATION=0
59
- SQLITE_USE_URI=0
60
- "
61
-
62
- # ========== START SCRIPT ========== #
63
-
64
- echo "setting up environment..."
65
- DEPS="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
66
- TEMP="$DEPS/temp"
67
- OUTPUT="$DEPS/sqlite3"
68
- rm -rf "$TEMP"
69
- rm -rf "$OUTPUT"
70
- mkdir -p "$TEMP"
71
- mkdir -p "$OUTPUT"
72
- export CFLAGS=`echo $(echo "$DEFINES" | sed -e "/^\s*$/d" -e "s/^/-D/")`
73
-
74
- echo "downloading source..."
75
- curl -#f "https://www.sqlite.org/$YEAR/sqlite-src-$VERSION.zip" > "$TEMP/source.zip" || exit 1
76
-
77
- echo "extracting source..."
78
- unzip "$TEMP/source.zip" -d "$TEMP" > /dev/null || exit 1
79
- cd "$TEMP/sqlite-src-$VERSION" || exit 1
80
-
81
- echo "configuring amalgamation..."
82
- sh configure > /dev/null || exit 1
83
-
84
- echo "building amalgamation..."
85
- make sqlite3.c > /dev/null || exit 1
86
-
87
- echo "copying amalgamation..."
88
- cp sqlite3.c sqlite3.h sqlite3ext.h "$OUTPUT/" || exit 1
89
-
90
- echo "updating gyp configs..."
91
- GYP="$DEPS/defines.gypi"
92
- printf "# THIS FILE IS AUTOMATICALLY GENERATED BY deps/download.sh (DO NOT EDIT)\n\n{\n 'defines': [\n" > "$GYP"
93
- printf "$DEFINES" | sed -e "/^\s*$/d" -e "s/\(.*\)/ '\1',/" >> "$GYP"
94
- printf " ],\n}\n" >> "$GYP"
95
-
96
- echo "updating docs..."
97
- DOCS="$DEPS/../docs/compilation.md"
98
- MAJOR=`expr "${VERSION:0:1}" + 0`
99
- MINOR=`expr "${VERSION:1:2}" + 0`
100
- PATCH=`expr "${VERSION:3:2}" + 0`
101
- sed -Ei.bak -e "s/version [0-9]+\.[0-9]+\.[0-9]+/version $MAJOR.$MINOR.$PATCH/g" "$DOCS"
102
- sed -i.bak -e "/^SQLITE_/,\$d" "$DOCS"
103
- sed -i.bak -e "/^HAVE_/,\$d" "$DOCS"
104
- rm "$DOCS".bak
105
- printf "$DEFINES" | sed -e "/^\s*$/d" >> "$DOCS"
106
- printf "\`\`\`\n" >> "$DOCS"
107
-
108
- echo "cleaning up..."
109
- cd - > /dev/null || exit 1
110
- rm -rf "$TEMP"
111
-
112
- echo "done!"
1
+ #!/usr/bin/env bash
2
+
3
+ # ===
4
+ # This script defines and generates the bundled SQLite3 unit (sqlite3.c).
5
+ #
6
+ # The following steps are taken:
7
+ # 1. populate the shell environment with the defined compile-time options.
8
+ # 2. download and extract the SQLite3 source code into a temporary directory.
9
+ # 3. run "sh configure" and "make sqlite3.c" within the source directory.
10
+ # 4. copy the generated amalgamation into the output directory (./sqlite3).
11
+ # 5. export the defined compile-time options to a gyp file (./defines.gypi).
12
+ # 6. update the docs (../docs/compilation.md) with details of this distribution.
13
+ #
14
+ # When a user builds better-sqlite3, the following steps are taken:
15
+ # 1. node-gyp loads the previously exported compile-time options (defines.gypi).
16
+ # 2. the copy.js script copies the bundled amalgamation into the build folder.
17
+ # 3. node-gyp compiles the copied sqlite3.c along with better_sqlite3.cpp.
18
+ # 4. node-gyp links the two resulting binaries to generate better_sqlite3.node.
19
+ # ===
20
+
21
+ YEAR="2022"
22
+ VERSION="3380200"
23
+
24
+ # Defines below are sorted alphabetically
25
+ DEFINES="
26
+ HAVE_INT16_T=1
27
+ HAVE_INT32_T=1
28
+ HAVE_INT8_T=1
29
+ HAVE_STDINT_H=1
30
+ HAVE_UINT16_T=1
31
+ HAVE_UINT32_T=1
32
+ HAVE_UINT8_T=1
33
+ SQLITE_DEFAULT_CACHE_SIZE=-16000
34
+ SQLITE_DEFAULT_FOREIGN_KEYS=1
35
+ SQLITE_DEFAULT_MEMSTATUS=0
36
+ SQLITE_DEFAULT_WAL_SYNCHRONOUS=1
37
+ SQLITE_DQS=0
38
+ SQLITE_ENABLE_COLUMN_METADATA
39
+ SQLITE_ENABLE_DBSTAT_VTAB
40
+ SQLITE_ENABLE_DESERIALIZE
41
+ SQLITE_ENABLE_FTS3
42
+ SQLITE_ENABLE_FTS3_PARENTHESIS
43
+ SQLITE_ENABLE_FTS4
44
+ SQLITE_ENABLE_FTS5
45
+ SQLITE_ENABLE_GEOPOLY
46
+ SQLITE_ENABLE_JSON1
47
+ SQLITE_ENABLE_MATH_FUNCTIONS
48
+ SQLITE_ENABLE_RTREE
49
+ SQLITE_ENABLE_STAT4
50
+ SQLITE_ENABLE_UPDATE_DELETE_LIMIT
51
+ SQLITE_LIKE_DOESNT_MATCH_BLOBS
52
+ SQLITE_OMIT_DEPRECATED
53
+ SQLITE_OMIT_PROGRESS_CALLBACK
54
+ SQLITE_OMIT_SHARED_CACHE
55
+ SQLITE_OMIT_TCL_VARIABLE
56
+ SQLITE_SOUNDEX
57
+ SQLITE_THREADSAFE=2
58
+ SQLITE_TRACE_SIZE_LIMIT=32
59
+ SQLITE_USER_AUTHENTICATION=0
60
+ SQLITE_USE_URI=0
61
+ "
62
+
63
+ # ========== START SCRIPT ========== #
64
+
65
+ echo "setting up environment..."
66
+ DEPS="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
67
+ TEMP="$DEPS/temp"
68
+ OUTPUT="$DEPS/sqlite3"
69
+ rm -rf "$TEMP"
70
+ rm -rf "$OUTPUT"
71
+ mkdir -p "$TEMP"
72
+ mkdir -p "$OUTPUT"
73
+ export CFLAGS=`echo $(echo "$DEFINES" | sed -e "/^\s*$/d" -e "s/^/-D/")`
74
+
75
+ echo "downloading source..."
76
+ curl -#f "https://www.sqlite.org/$YEAR/sqlite-src-$VERSION.zip" > "$TEMP/source.zip" || exit 1
77
+
78
+ echo "extracting source..."
79
+ unzip "$TEMP/source.zip" -d "$TEMP" > /dev/null || exit 1
80
+ cd "$TEMP/sqlite-src-$VERSION" || exit 1
81
+
82
+ echo "configuring amalgamation..."
83
+ sh configure > /dev/null || exit 1
84
+
85
+ echo "building amalgamation..."
86
+ make sqlite3.c > /dev/null || exit 1
87
+
88
+ echo "copying amalgamation..."
89
+ cp sqlite3.c sqlite3.h sqlite3ext.h "$OUTPUT/" || exit 1
90
+
91
+ echo "updating gyp configs..."
92
+ GYP="$DEPS/defines.gypi"
93
+ printf "# THIS FILE IS AUTOMATICALLY GENERATED BY deps/download.sh (DO NOT EDIT)\n\n{\n 'defines': [\n" > "$GYP"
94
+ printf "$DEFINES" | sed -e "/^\s*$/d" -e "s/\(.*\)/ '\1',/" >> "$GYP"
95
+ printf " ],\n}\n" >> "$GYP"
96
+
97
+ echo "updating docs..."
98
+ DOCS="$DEPS/../docs/compilation.md"
99
+ MAJOR=`expr "${VERSION:0:1}" + 0`
100
+ MINOR=`expr "${VERSION:1:2}" + 0`
101
+ PATCH=`expr "${VERSION:3:2}" + 0`
102
+ sed -Ei.bak -e "s/version [0-9]+\.[0-9]+\.[0-9]+/version $MAJOR.$MINOR.$PATCH/g" "$DOCS"
103
+ sed -i.bak -e "/^SQLITE_/,\$d" "$DOCS"
104
+ sed -i.bak -e "/^HAVE_/,\$d" "$DOCS"
105
+ rm "$DOCS".bak
106
+ printf "$DEFINES" | sed -e "/^\s*$/d" >> "$DOCS"
107
+ printf "\`\`\`\n" >> "$DOCS"
108
+
109
+ echo "cleaning up..."
110
+ cd - > /dev/null || exit 1
111
+ rm -rf "$TEMP"
112
+
113
+ echo "done!"
package/deps/setup.ps1 CHANGED
@@ -2,7 +2,7 @@
2
2
  $ErrorActionPreference = "Stop"
3
3
 
4
4
  # SQLite Info
5
- $SQLITEMC_VER = "v1.8.6"
5
+ $SQLITEMC_VER = "v1.8.7"
6
6
  $API_URL = "https://api.github.com/repos/utelle/SQLite3MultipleCiphers/releases/tags/" + $SQLITEMC_VER
7
7
 
8
8
  # Paths
@@ -136,7 +136,7 @@ SQLITE_API LPWSTR sqlite3_win32_utf8_to_unicode(const char*);
136
136
  /*** Begin of #include "sqlite3patched.c" ***/
137
137
  /******************************************************************************
138
138
  ** This file is an amalgamation of many separate C source files from SQLite
139
- ** version 3.46.0. By combining all the individual C code files into this
139
+ ** version 3.46.1. By combining all the individual C code files into this
140
140
  ** single large file, the entire code can be compiled as a single translation
141
141
  ** unit. This allows many compilers to do optimizations that would not be
142
142
  ** possible if the files were compiled separately. Performance improvements
@@ -154,7 +154,7 @@ SQLITE_API LPWSTR sqlite3_win32_utf8_to_unicode(const char*);
154
154
  ** separate file. This file contains only code for the core SQLite library.
155
155
  **
156
156
  ** The content in this amalgamation comes from Fossil check-in
157
- ** 96c92aba00c8375bc32fafcdf12429c58bd8.
157
+ ** c9c2ab54ba1f5f46360f1b4f35d849cd3f08.
158
158
  */
159
159
  #define SQLITE_CORE 1
160
160
  #define SQLITE_AMALGAMATION 1
@@ -595,9 +595,9 @@ extern "C" {
595
595
  ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
596
596
  ** [sqlite_version()] and [sqlite_source_id()].
597
597
  */
598
- #define SQLITE_VERSION "3.46.0"
599
- #define SQLITE_VERSION_NUMBER 3046000
600
- #define SQLITE_SOURCE_ID "2024-05-23 13:25:27 96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e"
598
+ #define SQLITE_VERSION "3.46.1"
599
+ #define SQLITE_VERSION_NUMBER 3046001
600
+ #define SQLITE_SOURCE_ID "2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69a1e33"
601
601
 
602
602
  /*
603
603
  ** CAPI3REF: Run-Time Library Version Numbers
@@ -19509,7 +19509,7 @@ struct SrcList {
19509
19509
  #define WHERE_AGG_DISTINCT 0x0400 /* Query is "SELECT agg(DISTINCT ...)" */
19510
19510
  #define WHERE_ORDERBY_LIMIT 0x0800 /* ORDERBY+LIMIT on the inner loop */
19511
19511
  #define WHERE_RIGHT_JOIN 0x1000 /* Processing a RIGHT JOIN */
19512
- /* 0x2000 not currently used */
19512
+ #define WHERE_KEEP_ALL_JOINS 0x2000 /* Do not do the omit-noop-join opt */
19513
19513
  #define WHERE_USE_LIMIT 0x4000 /* Use the LIMIT in cost estimates */
19514
19514
  /* 0x8000 not currently used */
19515
19515
 
@@ -90338,7 +90338,8 @@ SQLITE_PRIVATE sqlite3_value *sqlite3VdbeGetBoundValue(Vdbe *v, int iVar, u8 aff
90338
90338
  assert( iVar>0 );
90339
90339
  if( v ){
90340
90340
  Mem *pMem = &v->aVar[iVar-1];
90341
- assert( (v->db->flags & SQLITE_EnableQPSG)==0 );
90341
+ assert( (v->db->flags & SQLITE_EnableQPSG)==0
90342
+ || (v->db->mDbFlags & DBFLAG_InternalFunc)!=0 );
90342
90343
  if( 0==(pMem->flags & MEM_Null) ){
90343
90344
  sqlite3_value *pRet = sqlite3ValueNew(v->db);
90344
90345
  if( pRet ){
@@ -90358,7 +90359,8 @@ SQLITE_PRIVATE sqlite3_value *sqlite3VdbeGetBoundValue(Vdbe *v, int iVar, u8 aff
90358
90359
  */
90359
90360
  SQLITE_PRIVATE void sqlite3VdbeSetVarmask(Vdbe *v, int iVar){
90360
90361
  assert( iVar>0 );
90361
- assert( (v->db->flags & SQLITE_EnableQPSG)==0 );
90362
+ assert( (v->db->flags & SQLITE_EnableQPSG)==0
90363
+ || (v->db->mDbFlags & DBFLAG_InternalFunc)!=0 );
90362
90364
  if( iVar>=32 ){
90363
90365
  v->expmask |= 0x80000000;
90364
90366
  }else{
@@ -107115,7 +107117,7 @@ static void extendFJMatch(
107115
107117
  static SQLITE_NOINLINE int isValidSchemaTableName(
107116
107118
  const char *zTab, /* Name as it appears in the SQL */
107117
107119
  Table *pTab, /* The schema table we are trying to match */
107118
- Schema *pSchema /* non-NULL if a database qualifier is present */
107120
+ const char *zDb /* non-NULL if a database qualifier is present */
107119
107121
  ){
107120
107122
  const char *zLegacy;
107121
107123
  assert( pTab!=0 );
@@ -107126,7 +107128,7 @@ static SQLITE_NOINLINE int isValidSchemaTableName(
107126
107128
  if( sqlite3StrICmp(zTab+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0 ){
107127
107129
  return 1;
107128
107130
  }
107129
- if( pSchema==0 ) return 0;
107131
+ if( zDb==0 ) return 0;
107130
107132
  if( sqlite3StrICmp(zTab+7, &LEGACY_SCHEMA_TABLE[7])==0 ) return 1;
107131
107133
  if( sqlite3StrICmp(zTab+7, &PREFERRED_SCHEMA_TABLE[7])==0 ) return 1;
107132
107134
  }else{
@@ -107309,7 +107311,7 @@ static int lookupName(
107309
107311
  }
107310
107312
  }else if( sqlite3StrICmp(zTab, pTab->zName)!=0 ){
107311
107313
  if( pTab->tnum!=1 ) continue;
107312
- if( !isValidSchemaTableName(zTab, pTab, pSchema) ) continue;
107314
+ if( !isValidSchemaTableName(zTab, pTab, zDb) ) continue;
107313
107315
  }
107314
107316
  assert( ExprUseYTab(pExpr) );
107315
107317
  if( IN_RENAME_OBJECT && pItem->zAlias ){
@@ -109041,6 +109043,9 @@ SQLITE_PRIVATE int sqlite3ResolveExprNames(
109041
109043
  ** Resolve all names for all expression in an expression list. This is
109042
109044
  ** just like sqlite3ResolveExprNames() except that it works for an expression
109043
109045
  ** list rather than a single expression.
109046
+ **
109047
+ ** The return value is SQLITE_OK (0) for success or SQLITE_ERROR (1) for a
109048
+ ** failure.
109044
109049
  */
109045
109050
  SQLITE_PRIVATE int sqlite3ResolveExprListNames(
109046
109051
  NameContext *pNC, /* Namespace to resolve expressions in. */
@@ -109049,7 +109054,7 @@ SQLITE_PRIVATE int sqlite3ResolveExprListNames(
109049
109054
  int i;
109050
109055
  int savedHasAgg = 0;
109051
109056
  Walker w;
109052
- if( pList==0 ) return WRC_Continue;
109057
+ if( pList==0 ) return SQLITE_OK;
109053
109058
  w.pParse = pNC->pParse;
109054
109059
  w.xExprCallback = resolveExprStep;
109055
109060
  w.xSelectCallback = resolveSelectStep;
@@ -109063,7 +109068,7 @@ SQLITE_PRIVATE int sqlite3ResolveExprListNames(
109063
109068
  #if SQLITE_MAX_EXPR_DEPTH>0
109064
109069
  w.pParse->nHeight += pExpr->nHeight;
109065
109070
  if( sqlite3ExprCheckHeight(w.pParse, w.pParse->nHeight) ){
109066
- return WRC_Abort;
109071
+ return SQLITE_ERROR;
109067
109072
  }
109068
109073
  #endif
109069
109074
  sqlite3WalkExprNN(&w, pExpr);
@@ -109080,10 +109085,10 @@ SQLITE_PRIVATE int sqlite3ResolveExprListNames(
109080
109085
  (NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
109081
109086
  pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
109082
109087
  }
109083
- if( w.pParse->nErr>0 ) return WRC_Abort;
109088
+ if( w.pParse->nErr>0 ) return SQLITE_ERROR;
109084
109089
  }
109085
109090
  pNC->ncFlags |= savedHasAgg;
109086
- return WRC_Continue;
109091
+ return SQLITE_OK;
109087
109092
  }
109088
109093
 
109089
109094
  /*
@@ -117622,7 +117627,7 @@ static int renameResolveTrigger(Parse *pParse){
117622
117627
  /* ALWAYS() because if the table of the trigger does not exist, the
117623
117628
  ** error would have been hit before this point */
117624
117629
  if( ALWAYS(pParse->pTriggerTab) ){
117625
- rc = sqlite3ViewGetColumnNames(pParse, pParse->pTriggerTab);
117630
+ rc = sqlite3ViewGetColumnNames(pParse, pParse->pTriggerTab)!=0;
117626
117631
  }
117627
117632
 
117628
117633
  /* Resolve symbols in WHEN clause */
@@ -124596,8 +124601,9 @@ create_view_fail:
124596
124601
  #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
124597
124602
  /*
124598
124603
  ** The Table structure pTable is really a VIEW. Fill in the names of
124599
- ** the columns of the view in the pTable structure. Return the number
124600
- ** of errors. If an error is seen leave an error message in pParse->zErrMsg.
124604
+ ** the columns of the view in the pTable structure. Return non-zero if
124605
+ ** there are errors. If an error is seen an error message is left
124606
+ ** in pParse->zErrMsg.
124601
124607
  */
124602
124608
  static SQLITE_NOINLINE int viewGetColumnNames(Parse *pParse, Table *pTable){
124603
124609
  Table *pSelTab; /* A fake table from which we get the result set */
@@ -124720,7 +124726,7 @@ static SQLITE_NOINLINE int viewGetColumnNames(Parse *pParse, Table *pTable){
124720
124726
  sqlite3DeleteColumnNames(db, pTable);
124721
124727
  }
124722
124728
  #endif /* SQLITE_OMIT_VIEW */
124723
- return nErr;
124729
+ return nErr + pParse->nErr;
124724
124730
  }
124725
124731
  SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
124726
124732
  assert( pTable!=0 );
@@ -131018,6 +131024,8 @@ static void groupConcatValue(sqlite3_context *context){
131018
131024
  sqlite3_result_error_toobig(context);
131019
131025
  }else if( pAccum->accError==SQLITE_NOMEM ){
131020
131026
  sqlite3_result_error_nomem(context);
131027
+ }else if( pGCC->nAccum>0 && pAccum->nChar==0 ){
131028
+ sqlite3_result_text(context, "", 1, SQLITE_STATIC);
131021
131029
  }else{
131022
131030
  const char *zText = sqlite3_str_value(pAccum);
131023
131031
  sqlite3_result_text(context, zText, pAccum->nChar, SQLITE_TRANSIENT);
@@ -133772,6 +133780,7 @@ SQLITE_PRIVATE Select *sqlite3MultiValues(Parse *pParse, Select *pLeft, ExprList
133772
133780
  pRet->pSrc->nSrc = 1;
133773
133781
  pRet->pPrior = pLeft->pPrior;
133774
133782
  pRet->op = pLeft->op;
133783
+ if( pRet->pPrior ) pRet->selFlags |= SF_Values;
133775
133784
  pLeft->pPrior = 0;
133776
133785
  pLeft->op = TK_SELECT;
133777
133786
  assert( pLeft->pNext==0 );
@@ -166237,7 +166246,9 @@ static int whereLoopAddBtree(
166237
166246
  " according to whereIsCoveringIndex()\n", pProbe->zName));
166238
166247
  }
166239
166248
  }
166240
- }else if( m==0 ){
166249
+ }else if( m==0
166250
+ && (HasRowid(pTab) || pWInfo->pSelect!=0 || sqlite3FaultSim(700))
166251
+ ){
166241
166252
  WHERETRACE(0x200,
166242
166253
  ("-> %s a covering index according to bitmasks\n",
166243
166254
  pProbe->zName, m==0 ? "is" : "is not"));
@@ -168126,6 +168137,10 @@ static void showAllWhereLoops(WhereInfo *pWInfo, WhereClause *pWC){
168126
168137
  ** the right-most table of a subquery that was flattened into the
168127
168138
  ** main query and that subquery was the right-hand operand of an
168128
168139
  ** inner join that held an ON or USING clause.
168140
+ ** 6) The ORDER BY clause has 63 or fewer terms
168141
+ ** 7) The omit-noop-join optimization is enabled.
168142
+ **
168143
+ ** Items (1), (6), and (7) are checked by the caller.
168129
168144
  **
168130
168145
  ** For example, given:
168131
168146
  **
@@ -168539,6 +168554,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
168539
168554
  if( pOrderBy && pOrderBy->nExpr>=BMS ){
168540
168555
  pOrderBy = 0;
168541
168556
  wctrlFlags &= ~WHERE_WANT_DISTINCT;
168557
+ wctrlFlags |= WHERE_KEEP_ALL_JOINS; /* Disable omit-noop-join opt */
168542
168558
  }
168543
168559
 
168544
168560
  /* The number of tables in the FROM clause is limited by the number of
@@ -168839,10 +168855,10 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
168839
168855
  ** in-line sqlite3WhereCodeOneLoopStart() for performance reasons.
168840
168856
  */
168841
168857
  notReady = ~(Bitmask)0;
168842
- if( pWInfo->nLevel>=2
168843
- && pResultSet!=0 /* these two combine to guarantee */
168844
- && 0==(wctrlFlags & WHERE_AGG_DISTINCT) /* condition (1) above */
168845
- && OptimizationEnabled(db, SQLITE_OmitNoopJoin)
168858
+ if( pWInfo->nLevel>=2 /* Must be a join, or this opt8n is pointless */
168859
+ && pResultSet!=0 /* Condition (1) */
168860
+ && 0==(wctrlFlags & (WHERE_AGG_DISTINCT|WHERE_KEEP_ALL_JOINS)) /* (1),(6) */
168861
+ && OptimizationEnabled(db, SQLITE_OmitNoopJoin) /* (7) */
168846
168862
  ){
168847
168863
  notReady = whereOmitNoopJoin(pWInfo, notReady);
168848
168864
  nTabList = pWInfo->nLevel;
@@ -169162,26 +169178,6 @@ whereBeginError:
169162
169178
  }
169163
169179
  #endif
169164
169180
 
169165
- #ifdef SQLITE_DEBUG
169166
- /*
169167
- ** Return true if cursor iCur is opened by instruction k of the
169168
- ** bytecode. Used inside of assert() only.
169169
- */
169170
- static int cursorIsOpen(Vdbe *v, int iCur, int k){
169171
- while( k>=0 ){
169172
- VdbeOp *pOp = sqlite3VdbeGetOp(v,k--);
169173
- if( pOp->p1!=iCur ) continue;
169174
- if( pOp->opcode==OP_Close ) return 0;
169175
- if( pOp->opcode==OP_OpenRead ) return 1;
169176
- if( pOp->opcode==OP_OpenWrite ) return 1;
169177
- if( pOp->opcode==OP_OpenDup ) return 1;
169178
- if( pOp->opcode==OP_OpenAutoindex ) return 1;
169179
- if( pOp->opcode==OP_OpenEphemeral ) return 1;
169180
- }
169181
- return 0;
169182
- }
169183
- #endif /* SQLITE_DEBUG */
169184
-
169185
169181
  /*
169186
169182
  ** Generate the end of the WHERE loop. See comments on
169187
169183
  ** sqlite3WhereBegin() for additional information.
@@ -169481,16 +169477,10 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
169481
169477
  ** reference. Verify that this is harmless - that the
169482
169478
  ** table being referenced really is open.
169483
169479
  */
169484
- #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
169485
- assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
169486
- || cursorIsOpen(v,pOp->p1,k)
169487
- || pOp->opcode==OP_Offset
169488
- );
169489
- #else
169490
- assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
169491
- || cursorIsOpen(v,pOp->p1,k)
169492
- );
169493
- #endif
169480
+ if( pLoop->wsFlags & WHERE_IDX_ONLY ){
169481
+ sqlite3ErrorMsg(pParse, "internal query planner error");
169482
+ pParse->rc = SQLITE_INTERNAL;
169483
+ }
169494
169484
  }
169495
169485
  }else if( pOp->opcode==OP_Rowid ){
169496
169486
  pOp->p1 = pLevel->iIdxCur;
@@ -172761,9 +172751,9 @@ static void updateDeleteLimitError(
172761
172751
  break;
172762
172752
  }
172763
172753
  }
172764
- if( (p->selFlags & SF_MultiValue)==0 &&
172765
- (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0 &&
172766
- cnt>mxSelect
172754
+ if( (p->selFlags & (SF_MultiValue|SF_Values))==0
172755
+ && (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0
172756
+ && cnt>mxSelect
172767
172757
  ){
172768
172758
  sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
172769
172759
  }
@@ -237182,7 +237172,11 @@ static int sqlite3Fts5ExprNew(
237182
237172
  }
237183
237173
 
237184
237174
  sqlite3_free(sParse.apPhrase);
237185
- *pzErr = sParse.zErr;
237175
+ if( 0==*pzErr ){
237176
+ *pzErr = sParse.zErr;
237177
+ }else{
237178
+ sqlite3_free(sParse.zErr);
237179
+ }
237186
237180
  return sParse.rc;
237187
237181
  }
237188
237182
 
@@ -239310,6 +239304,7 @@ static Fts5ExprNode *sqlite3Fts5ParseImplicitAnd(
239310
239304
  assert( pRight->eType==FTS5_STRING
239311
239305
  || pRight->eType==FTS5_TERM
239312
239306
  || pRight->eType==FTS5_EOF
239307
+ || (pRight->eType==FTS5_AND && pParse->bPhraseToAnd)
239313
239308
  );
239314
239309
 
239315
239310
  if( pLeft->eType==FTS5_AND ){
@@ -251477,6 +251472,7 @@ static int fts5UpdateMethod(
251477
251472
  rc = SQLITE_ERROR;
251478
251473
  }else{
251479
251474
  rc = fts5SpecialDelete(pTab, apVal);
251475
+ bUpdateOrDelete = 1;
251480
251476
  }
251481
251477
  }else{
251482
251478
  rc = fts5SpecialInsert(pTab, z, apVal[2 + pConfig->nCol + 1]);
@@ -252651,14 +252647,16 @@ static int sqlite3Fts5GetTokenizer(
252651
252647
  if( pMod==0 ){
252652
252648
  assert( nArg>0 );
252653
252649
  rc = SQLITE_ERROR;
252654
- *pzErr = sqlite3_mprintf("no such tokenizer: %s", azArg[0]);
252650
+ if( pzErr ) *pzErr = sqlite3_mprintf("no such tokenizer: %s", azArg[0]);
252655
252651
  }else{
252656
252652
  rc = pMod->x.xCreate(
252657
252653
  pMod->pUserData, (azArg?&azArg[1]:0), (nArg?nArg-1:0), &pConfig->pTok
252658
252654
  );
252659
252655
  pConfig->pTokApi = &pMod->x;
252660
252656
  if( rc!=SQLITE_OK ){
252661
- if( pzErr ) *pzErr = sqlite3_mprintf("error in tokenizer constructor");
252657
+ if( pzErr && rc!=SQLITE_NOMEM ){
252658
+ *pzErr = sqlite3_mprintf("error in tokenizer constructor");
252659
+ }
252662
252660
  }else{
252663
252661
  pConfig->ePattern = sqlite3Fts5TokenizerPattern(
252664
252662
  pMod->x.xCreate, pConfig->pTok
@@ -252717,7 +252715,7 @@ static void fts5SourceIdFunc(
252717
252715
  ){
252718
252716
  assert( nArg==0 );
252719
252717
  UNUSED_PARAM2(nArg, apUnused);
252720
- sqlite3_result_text(pCtx, "fts5: 2024-05-23 13:25:27 96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e", -1, SQLITE_TRANSIENT);
252718
+ sqlite3_result_text(pCtx, "fts5: 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69a1e33", -1, SQLITE_TRANSIENT);
252721
252719
  }
252722
252720
 
252723
252721
  /*
@@ -252752,17 +252750,23 @@ static int fts5IntegrityMethod(
252752
252750
 
252753
252751
  assert( pzErr!=0 && *pzErr==0 );
252754
252752
  UNUSED_PARAM(isQuick);
252753
+ assert( pTab->p.pConfig->pzErrmsg==0 );
252754
+ pTab->p.pConfig->pzErrmsg = pzErr;
252755
252755
  rc = sqlite3Fts5StorageIntegrity(pTab->pStorage, 0);
252756
- if( (rc&0xff)==SQLITE_CORRUPT ){
252757
- *pzErr = sqlite3_mprintf("malformed inverted index for FTS5 table %s.%s",
252758
- zSchema, zTabname);
252759
- rc = (*pzErr) ? SQLITE_OK : SQLITE_NOMEM;
252760
- }else if( rc!=SQLITE_OK ){
252761
- *pzErr = sqlite3_mprintf("unable to validate the inverted index for"
252762
- " FTS5 table %s.%s: %s",
252763
- zSchema, zTabname, sqlite3_errstr(rc));
252756
+ if( *pzErr==0 && rc!=SQLITE_OK ){
252757
+ if( (rc&0xff)==SQLITE_CORRUPT ){
252758
+ *pzErr = sqlite3_mprintf("malformed inverted index for FTS5 table %s.%s",
252759
+ zSchema, zTabname);
252760
+ rc = (*pzErr) ? SQLITE_OK : SQLITE_NOMEM;
252761
+ }else{
252762
+ *pzErr = sqlite3_mprintf("unable to validate the inverted index for"
252763
+ " FTS5 table %s.%s: %s",
252764
+ zSchema, zTabname, sqlite3_errstr(rc));
252765
+ }
252764
252766
  }
252767
+
252765
252768
  sqlite3Fts5IndexCloseReader(pTab->p.pIndex);
252769
+ pTab->p.pConfig->pzErrmsg = 0;
252766
252770
 
252767
252771
  return rc;
252768
252772
  }
@@ -254196,7 +254200,7 @@ static int fts5AsciiCreate(
254196
254200
  int i;
254197
254201
  memset(p, 0, sizeof(AsciiTokenizer));
254198
254202
  memcpy(p->aTokenChar, aAsciiTokenChar, sizeof(aAsciiTokenChar));
254199
- for(i=0; rc==SQLITE_OK && i<nArg; i+=2){
254203
+ for(i=0; rc==SQLITE_OK && i<nArg-1; i+=2){
254200
254204
  const char *zArg = azArg[i+1];
254201
254205
  if( 0==sqlite3_stricmp(azArg[i], "tokenchars") ){
254202
254206
  fts5AsciiAddExceptions(p, zArg, 1);
@@ -254207,6 +254211,7 @@ static int fts5AsciiCreate(
254207
254211
  rc = SQLITE_ERROR;
254208
254212
  }
254209
254213
  }
254214
+ if( rc==SQLITE_OK && i<nArg ) rc = SQLITE_ERROR;
254210
254215
  if( rc!=SQLITE_OK ){
254211
254216
  fts5AsciiDelete((Fts5Tokenizer*)p);
254212
254217
  p = 0;
@@ -254498,17 +254503,16 @@ static int fts5UnicodeCreate(
254498
254503
  }
254499
254504
 
254500
254505
  /* Search for a "categories" argument */
254501
- for(i=0; rc==SQLITE_OK && i<nArg; i+=2){
254506
+ for(i=0; rc==SQLITE_OK && i<nArg-1; i+=2){
254502
254507
  if( 0==sqlite3_stricmp(azArg[i], "categories") ){
254503
254508
  zCat = azArg[i+1];
254504
254509
  }
254505
254510
  }
254506
-
254507
254511
  if( rc==SQLITE_OK ){
254508
254512
  rc = unicodeSetCategories(p, zCat);
254509
254513
  }
254510
254514
 
254511
- for(i=0; rc==SQLITE_OK && i<nArg; i+=2){
254515
+ for(i=0; rc==SQLITE_OK && i<nArg-1; i+=2){
254512
254516
  const char *zArg = azArg[i+1];
254513
254517
  if( 0==sqlite3_stricmp(azArg[i], "remove_diacritics") ){
254514
254518
  if( (zArg[0]!='0' && zArg[0]!='1' && zArg[0]!='2') || zArg[1] ){
@@ -254533,6 +254537,7 @@ static int fts5UnicodeCreate(
254533
254537
  rc = SQLITE_ERROR;
254534
254538
  }
254535
254539
  }
254540
+ if( i<nArg && rc==SQLITE_OK ) rc = SQLITE_ERROR;
254536
254541
 
254537
254542
  }else{
254538
254543
  rc = SQLITE_NOMEM;
@@ -255415,7 +255420,7 @@ static int fts5TriCreate(
255415
255420
  int i;
255416
255421
  pNew->bFold = 1;
255417
255422
  pNew->iFoldParam = 0;
255418
- for(i=0; rc==SQLITE_OK && i<nArg; i+=2){
255423
+ for(i=0; rc==SQLITE_OK && i<nArg-1; i+=2){
255419
255424
  const char *zArg = azArg[i+1];
255420
255425
  if( 0==sqlite3_stricmp(azArg[i], "case_sensitive") ){
255421
255426
  if( (zArg[0]!='0' && zArg[0]!='1') || zArg[1] ){
@@ -255433,6 +255438,7 @@ static int fts5TriCreate(
255433
255438
  rc = SQLITE_ERROR;
255434
255439
  }
255435
255440
  }
255441
+ if( i<nArg && rc==SQLITE_OK ) rc = SQLITE_ERROR;
255436
255442
 
255437
255443
  if( pNew->iFoldParam!=0 && pNew->bFold==0 ){
255438
255444
  rc = SQLITE_ERROR;
@@ -258066,9 +258072,9 @@ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
258066
258072
 
258067
258073
  #define SQLITE3MC_VERSION_MAJOR 1
258068
258074
  #define SQLITE3MC_VERSION_MINOR 8
258069
- #define SQLITE3MC_VERSION_RELEASE 6
258075
+ #define SQLITE3MC_VERSION_RELEASE 7
258070
258076
  #define SQLITE3MC_VERSION_SUBRELEASE 0
258071
- #define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.8.6"
258077
+ #define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.8.7"
258072
258078
 
258073
258079
  #endif /* SQLITE3MC_VERSION_H_ */
258074
258080
  /*** End of #include "sqlite3mc_version.h" ***/
@@ -258227,9 +258233,9 @@ extern "C" {
258227
258233
  ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
258228
258234
  ** [sqlite_version()] and [sqlite_source_id()].
258229
258235
  */
258230
- #define SQLITE_VERSION "3.46.0"
258231
- #define SQLITE_VERSION_NUMBER 3046000
258232
- #define SQLITE_SOURCE_ID "2024-05-23 13:25:27 96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e"
258236
+ #define SQLITE_VERSION "3.46.1"
258237
+ #define SQLITE_VERSION_NUMBER 3046001
258238
+ #define SQLITE_SOURCE_ID "2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69a1e33"
258233
258239
 
258234
258240
  /*
258235
258241
  ** CAPI3REF: Run-Time Library Version Numbers
@@ -283598,7 +283604,7 @@ sqlite3mcBtreeSetPageSize(Btree* p, int pageSize, int nReserve, int iFix)
283598
283604
  ** Change 4: Call sqlite3mcBtreeSetPageSize instead of sqlite3BtreeSetPageSize for main database
283599
283605
  ** (sqlite3mcBtreeSetPageSize allows to reduce the number of reserved bytes)
283600
283606
  **
283601
- ** This code is generated by the script rekeyvacuum.sh from SQLite version 3.46.0 amalgamation.
283607
+ ** This code is generated by the script rekeyvacuum.sh from SQLite version 3.46.1 amalgamation.
283602
283608
  */
283603
283609
  SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
283604
283610
  char **pzErrMsg, /* Write error message here */
@@ -31,9 +31,9 @@
31
31
 
32
32
  #define SQLITE3MC_VERSION_MAJOR 1
33
33
  #define SQLITE3MC_VERSION_MINOR 8
34
- #define SQLITE3MC_VERSION_RELEASE 6
34
+ #define SQLITE3MC_VERSION_RELEASE 7
35
35
  #define SQLITE3MC_VERSION_SUBRELEASE 0
36
- #define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.8.6"
36
+ #define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.8.7"
37
37
 
38
38
  #endif /* SQLITE3MC_VERSION_H_ */
39
39
  /*** End of #include "sqlite3mc_version.h" ***/
@@ -192,9 +192,9 @@ extern "C" {
192
192
  ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
193
193
  ** [sqlite_version()] and [sqlite_source_id()].
194
194
  */
195
- #define SQLITE_VERSION "3.46.0"
196
- #define SQLITE_VERSION_NUMBER 3046000
197
- #define SQLITE_SOURCE_ID "2024-05-23 13:25:27 96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e"
195
+ #define SQLITE_VERSION "3.46.1"
196
+ #define SQLITE_VERSION_NUMBER 3046001
197
+ #define SQLITE_SOURCE_ID "2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69a1e33"
198
198
 
199
199
  /*
200
200
  ** CAPI3REF: Run-Time Library Version Numbers
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Type definitions for better-sqlite3-multiple-ciphers 8.5.0
1
+ // Type definitions for better-sqlite3-multiple-ciphers 11.2.1
2
2
  // Project: https://github.com/m4heshd/better-sqlite3-multiple-ciphers
3
3
  // Definitions by: Ben Davies <https://github.com/Morfent>
4
4
  // Mathew Rumsey <https://github.com/matrumz>
@@ -19,7 +19,7 @@ type ArgumentTypes<F extends VariableArgFunction> = F extends (...args: infer A)
19
19
  type ElementOf<T> = T extends Array<infer E> ? E : T;
20
20
 
21
21
  declare namespace BetterSqlite3MultipleCiphers {
22
- interface Statement<BindParameters extends unknown[]> {
22
+ interface Statement<BindParameters extends unknown[], Result = unknown> {
23
23
  database: Database;
24
24
  source: string;
25
25
  reader: boolean;
@@ -27,9 +27,9 @@ declare namespace BetterSqlite3MultipleCiphers {
27
27
  busy: boolean;
28
28
 
29
29
  run(...params: BindParameters): Database.RunResult;
30
- get(...params: BindParameters): unknown;
31
- all(...params: BindParameters): unknown[];
32
- iterate(...params: BindParameters): IterableIterator<unknown>;
30
+ get(...params: BindParameters): Result | undefined;
31
+ all(...params: BindParameters): Result[];
32
+ iterate(...params: BindParameters): IterableIterator<Result>;
33
33
  pluck(toggleState?: boolean): this;
34
34
  expand(toggleState?: boolean): this;
35
35
  raw(toggleState?: boolean): this;
@@ -55,7 +55,7 @@ declare namespace BetterSqlite3MultipleCiphers {
55
55
  }
56
56
 
57
57
  interface VirtualTableOptions {
58
- rows: () => Generator;
58
+ rows: (...params: unknown[]) => Generator;
59
59
  columns: string[];
60
60
  parameters?: string[] | undefined;
61
61
  safeIntegers?: boolean | undefined;
@@ -69,9 +69,9 @@ declare namespace BetterSqlite3MultipleCiphers {
69
69
  open: boolean;
70
70
  inTransaction: boolean;
71
71
 
72
- prepare<BindParameters extends unknown[] | {} = unknown[]>(
72
+ prepare<BindParameters extends unknown[] | {} = unknown[], Result = unknown>(
73
73
  source: string,
74
- ): BindParameters extends unknown[] ? Statement<BindParameters> : Statement<[BindParameters]>;
74
+ ): BindParameters extends unknown[] ? Statement<BindParameters, Result> : Statement<[BindParameters], Result>;
75
75
  transaction<F extends VariableArgFunction>(fn: F): Transaction<F>;
76
76
  exec(source: string): this;
77
77
  key(key: Buffer): number;
@@ -79,12 +79,16 @@ declare namespace BetterSqlite3MultipleCiphers {
79
79
  pragma(source: string, options?: Database.PragmaOptions): unknown;
80
80
  function(name: string, cb: (...params: unknown[]) => unknown): this;
81
81
  function(name: string, options: Database.RegistrationOptions, cb: (...params: unknown[]) => unknown): this;
82
- aggregate<T>(name: string, options: Database.RegistrationOptions & {
83
- start?: T | (() => T);
84
- step: (total: T, next: ElementOf<T>) => T | void;
85
- inverse?: ((total: T, dropped: T) => T) | undefined;
86
- result?: ((total: T) => unknown) | undefined;
87
- }): this;
82
+ aggregate<T>(
83
+ name: string,
84
+ options: Database.RegistrationOptions & {
85
+ start?: T | (() => T);
86
+ // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
87
+ step: (total: T, next: ElementOf<T>) => T | void;
88
+ inverse?: ((total: T, dropped: T) => T) | undefined;
89
+ result?: ((total: T) => unknown) | undefined;
90
+ },
91
+ ): this;
88
92
  loadExtension(path: string): this;
89
93
  close(): this;
90
94
  defaultSafeIntegers(toggleState?: boolean): this;
@@ -95,8 +99,8 @@ declare namespace BetterSqlite3MultipleCiphers {
95
99
  }
96
100
 
97
101
  interface DatabaseConstructor {
98
- new (filename: string | Buffer, options?: Database.Options): Database;
99
- (filename: string, options?: Database.Options): Database;
102
+ new(filename?: string | Buffer, options?: Database.Options): Database;
103
+ (filename?: string, options?: Database.Options): Database;
100
104
  prototype: Database;
101
105
 
102
106
  SqliteError: typeof SqliteError;
@@ -150,10 +154,9 @@ declare namespace Database {
150
154
  }
151
155
 
152
156
  type SqliteError = typeof SqliteError;
153
- type Statement<BindParameters extends unknown[] | {} = unknown[]> = BindParameters extends unknown[]
154
- ? BetterSqlite3MultipleCiphers.Statement<BindParameters>
155
- : BetterSqlite3MultipleCiphers.Statement<[BindParameters]>;
156
- type ColumnDefinition = BetterSqlite3MultipleCiphers.ColumnDefinition;
157
+ type Statement<BindParameters extends unknown[] | {} = unknown[], Result = unknown> = BindParameters extends unknown[] ?
158
+ BetterSqlite3MultipleCiphers.Statement<BindParameters, Result> :
159
+ BetterSqlite3MultipleCiphers.Statement<[BindParameters], Result>;
157
160
  type Transaction<T extends VariableArgFunction = VariableArgFunction> = BetterSqlite3MultipleCiphers.Transaction<T>;
158
161
  type Database = BetterSqlite3MultipleCiphers.Database;
159
162
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-sqlite3-multiple-ciphers",
3
- "version": "11.1.2",
3
+ "version": "11.3.0",
4
4
  "description": "better-sqlite3 with multiple-cipher encryption support",
5
5
  "homepage": "https://github.com/m4heshd/better-sqlite3-multiple-ciphers",
6
6
  "author": "Mahesh Bandara Wijerathna (m4heshd) <m4heshd@gmail.com>",
@@ -2,18 +2,18 @@
2
2
  //
3
3
 
4
4
  #include "better_sqlite3.hpp"
5
- #line 150 "./src/util/macros.lzz"
5
+ #line 154 "./src/util/macros.lzz"
6
6
  void SetPrototypeGetter(
7
- v8::Isolate* isolate,
8
- v8::Local<v8::External> data,
9
- v8::Local<v8::FunctionTemplate> recv,
10
- const char* name,
11
- v8::AccessorGetterCallback func
7
+ v8::Isolate* isolate,
8
+ v8::Local<v8::External> data,
9
+ v8::Local<v8::FunctionTemplate> recv,
10
+ const char* name,
11
+ v8::AccessorNameGetterCallback func
12
12
  ) {
13
- v8::HandleScope scope(isolate);
13
+ v8::HandleScope scope(isolate);
14
14
 
15
- #if defined NODE_MODULE_VERSION && NODE_MODULE_VERSION < 121
16
- recv->InstanceTemplate()->SetAccessor(
15
+ #if defined NODE_MODULE_VERSION && NODE_MODULE_VERSION < 121
16
+ recv->InstanceTemplate()->SetAccessor(
17
17
  InternalizedFromLatin1(isolate, name),
18
18
  func,
19
19
  0,
@@ -21,16 +21,16 @@ void SetPrototypeGetter(
21
21
  v8::AccessControl::DEFAULT,
22
22
  v8::PropertyAttribute::None
23
23
  );
24
- #else
25
- recv->InstanceTemplate()->SetAccessor(
26
- InternalizedFromLatin1(isolate, name),
27
- func,
28
- 0,
29
- data
30
- );
31
- #endif
24
+ #else
25
+ recv->InstanceTemplate()->SetNativeDataProperty(
26
+ InternalizedFromLatin1(isolate, name),
27
+ func,
28
+ 0,
29
+ data
30
+ );
31
+ #endif
32
32
  }
33
- #line 180 "./src/util/macros.lzz"
33
+ #line 184 "./src/util/macros.lzz"
34
34
  #ifndef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
35
35
  #define SAFE_NEW_BUFFER(env, data, length, finalizeCallback, finalizeHint) node::Buffer::New(env, data, length, finalizeCallback, finalizeHint)
36
36
  #else
@@ -103,49 +103,49 @@ namespace Data
103
103
  #line 70 "./src/util/data.lzz"
104
104
  static char const RAW = 3;
105
105
  }
106
- #line 34 "./src/util/macros.lzz"
106
+ #line 38 "./src/util/macros.lzz"
107
107
  void ThrowError (char const * message)
108
- #line 34 "./src/util/macros.lzz"
108
+ #line 38 "./src/util/macros.lzz"
109
109
  { v8 :: Isolate * isolate = v8 :: Isolate :: GetCurrent ( ) ; isolate->ThrowException(v8::Exception::Error(StringFromUtf8(isolate, message, -1)));
110
110
  }
111
- #line 35 "./src/util/macros.lzz"
111
+ #line 39 "./src/util/macros.lzz"
112
112
  void ThrowTypeError (char const * message)
113
- #line 35 "./src/util/macros.lzz"
113
+ #line 39 "./src/util/macros.lzz"
114
114
  { v8 :: Isolate * isolate = v8 :: Isolate :: GetCurrent ( ) ; isolate->ThrowException(v8::Exception::TypeError(StringFromUtf8(isolate, message, -1)));
115
115
  }
116
- #line 36 "./src/util/macros.lzz"
116
+ #line 40 "./src/util/macros.lzz"
117
117
  void ThrowRangeError (char const * message)
118
- #line 36 "./src/util/macros.lzz"
118
+ #line 40 "./src/util/macros.lzz"
119
119
  { v8 :: Isolate * isolate = v8 :: Isolate :: GetCurrent ( ) ; isolate->ThrowException(v8::Exception::RangeError(StringFromUtf8(isolate, message, -1)));
120
120
  }
121
- #line 102 "./src/util/macros.lzz"
121
+ #line 106 "./src/util/macros.lzz"
122
122
  v8::Local <v8::FunctionTemplate> NewConstructorTemplate (v8::Isolate * isolate, v8::Local <v8::External> data, v8::FunctionCallback func, char const * name)
123
- #line 107 "./src/util/macros.lzz"
123
+ #line 111 "./src/util/macros.lzz"
124
124
  {
125
- v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate, func, data);
126
- t->InstanceTemplate()->SetInternalFieldCount(1);
127
- t->SetClassName(InternalizedFromLatin1(isolate, name));
128
- return t;
125
+ v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate, func, data);
126
+ t->InstanceTemplate()->SetInternalFieldCount(1);
127
+ t->SetClassName(InternalizedFromLatin1(isolate, name));
128
+ return t;
129
129
  }
130
- #line 113 "./src/util/macros.lzz"
130
+ #line 117 "./src/util/macros.lzz"
131
131
  void SetPrototypeMethod (v8::Isolate * isolate, v8::Local <v8::External> data, v8::Local <v8::FunctionTemplate> recv, char const * name, v8::FunctionCallback func)
132
- #line 119 "./src/util/macros.lzz"
132
+ #line 123 "./src/util/macros.lzz"
133
133
  {
134
- v8::HandleScope scope(isolate);
135
- recv->PrototypeTemplate()->Set(
136
- InternalizedFromLatin1(isolate, name),
137
- v8::FunctionTemplate::New(isolate, func, data, v8::Signature::New(isolate, recv))
138
- );
134
+ v8::HandleScope scope(isolate);
135
+ recv->PrototypeTemplate()->Set(
136
+ InternalizedFromLatin1(isolate, name),
137
+ v8::FunctionTemplate::New(isolate, func, data, v8::Signature::New(isolate, recv))
138
+ );
139
139
  }
140
- #line 126 "./src/util/macros.lzz"
140
+ #line 130 "./src/util/macros.lzz"
141
141
  void SetPrototypeSymbolMethod (v8::Isolate * isolate, v8::Local <v8::External> data, v8::Local <v8::FunctionTemplate> recv, v8::Local <v8::Symbol> symbol, v8::FunctionCallback func)
142
- #line 132 "./src/util/macros.lzz"
142
+ #line 136 "./src/util/macros.lzz"
143
143
  {
144
- v8::HandleScope scope(isolate);
145
- recv->PrototypeTemplate()->Set(
146
- symbol,
147
- v8::FunctionTemplate::New(isolate, func, data, v8::Signature::New(isolate, recv))
148
- );
144
+ v8::HandleScope scope(isolate);
145
+ recv->PrototypeTemplate()->Set(
146
+ symbol,
147
+ v8::FunctionTemplate::New(isolate, func, data, v8::Signature::New(isolate, recv))
148
+ );
149
149
  }
150
150
  #line 4 "./src/util/constants.lzz"
151
151
  v8::Local <v8::String> CS::Code (v8::Isolate * isolate, int code)
@@ -778,13 +778,13 @@ void Database::JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & inf
778
778
  sqlite3_db_config(db->db_handle, SQLITE_DBCONFIG_DEFENSIVE, static_cast<int>(!db->unsafe_mode), NULL);
779
779
  }
780
780
  #line 455 "./src/objects/database.lzz"
781
- void Database::JS_open (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
781
+ void Database::JS_open (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
782
782
  #line 455 "./src/objects/database.lzz"
783
783
  {
784
784
  info.GetReturnValue().Set( node :: ObjectWrap :: Unwrap <Database>(info.This())->open);
785
785
  }
786
786
  #line 459 "./src/objects/database.lzz"
787
- void Database::JS_inTransaction (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
787
+ void Database::JS_inTransaction (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
788
788
  #line 459 "./src/objects/database.lzz"
789
789
  {
790
790
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
@@ -1153,7 +1153,7 @@ void Statement::JS_columns (v8::FunctionCallbackInfo <v8 :: Value> const & info)
1153
1153
  info.GetReturnValue().Set(columns);
1154
1154
  }
1155
1155
  #line 321 "./src/objects/statement.lzz"
1156
- void Statement::JS_busy (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
1156
+ void Statement::JS_busy (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
1157
1157
  #line 321 "./src/objects/statement.lzz"
1158
1158
  {
1159
1159
  Statement* stmt = node :: ObjectWrap :: Unwrap <Statement>(info.This());
@@ -16,48 +16,48 @@
16
16
  #include <node.h>
17
17
  #include <node_object_wrap.h>
18
18
  #include <node_buffer.h>
19
- #line 141 "./src/util/macros.lzz"
19
+ #line 145 "./src/util/macros.lzz"
20
20
  void SetPrototypeGetter(
21
- v8::Isolate* isolate,
22
- v8::Local<v8::External> data,
23
- v8::Local<v8::FunctionTemplate> recv,
24
- const char* name,
25
- v8::AccessorGetterCallback func
21
+ v8::Isolate* isolate,
22
+ v8::Local<v8::External> data,
23
+ v8::Local<v8::FunctionTemplate> recv,
24
+ const char* name,
25
+ v8::AccessorNameGetterCallback func
26
26
  );
27
27
  #line 36 "./src/util/binder.lzz"
28
28
  static bool IsPlainObject(v8::Isolate* isolate, v8::Local<v8::Object> obj);
29
29
  #define LZZ_INLINE inline
30
- #line 16 "./src/util/macros.lzz"
30
+ #line 20 "./src/util/macros.lzz"
31
31
  v8::Local <v8::String> StringFromUtf8 (v8::Isolate * isolate, char const * data, int length);
32
- #line 19 "./src/util/macros.lzz"
32
+ #line 23 "./src/util/macros.lzz"
33
33
  v8::Local <v8::String> InternalizedFromUtf8 (v8::Isolate * isolate, char const * data, int length);
34
- #line 22 "./src/util/macros.lzz"
35
- v8::Local <v8::Value> InternalizedFromUtf8OrNull (v8::Isolate * isolate, char const * data, int length);
36
34
  #line 26 "./src/util/macros.lzz"
37
- v8::Local <v8::String> InternalizedFromLatin1 (v8::Isolate * isolate, char const * str);
35
+ v8::Local <v8::Value> InternalizedFromUtf8OrNull (v8::Isolate * isolate, char const * data, int length);
38
36
  #line 30 "./src/util/macros.lzz"
39
- void SetFrozen (v8::Isolate * isolate, v8::Local <v8::Context> ctx, v8::Local <v8::Object> obj, v8::Global <v8::String> & key, v8::Local <v8::Value> value);
37
+ v8::Local <v8::String> InternalizedFromLatin1 (v8::Isolate * isolate, char const * str);
40
38
  #line 34 "./src/util/macros.lzz"
39
+ void SetFrozen (v8::Isolate * isolate, v8::Local <v8::Context> ctx, v8::Local <v8::Object> obj, v8::Global <v8::String> & key, v8::Local <v8::Value> value);
40
+ #line 38 "./src/util/macros.lzz"
41
41
  void ThrowError (char const * message);
42
- #line 35 "./src/util/macros.lzz"
42
+ #line 39 "./src/util/macros.lzz"
43
43
  void ThrowTypeError (char const * message);
44
- #line 36 "./src/util/macros.lzz"
44
+ #line 40 "./src/util/macros.lzz"
45
45
  void ThrowRangeError (char const * message);
46
- #line 88 "./src/util/macros.lzz"
46
+ #line 92 "./src/util/macros.lzz"
47
47
  bool IS_SKIPPED (char c);
48
- #line 93 "./src/util/macros.lzz"
48
+ #line 97 "./src/util/macros.lzz"
49
49
  template <typename T>
50
- #line 93 "./src/util/macros.lzz"
50
+ #line 97 "./src/util/macros.lzz"
51
51
  T * ALLOC_ARRAY (size_t count);
52
- #line 98 "./src/util/macros.lzz"
52
+ #line 102 "./src/util/macros.lzz"
53
53
  template <typename T>
54
- #line 98 "./src/util/macros.lzz"
55
- void FREE_ARRAY (T * array_pointer);
56
54
  #line 102 "./src/util/macros.lzz"
55
+ void FREE_ARRAY (T * array_pointer);
56
+ #line 106 "./src/util/macros.lzz"
57
57
  v8::Local <v8::FunctionTemplate> NewConstructorTemplate (v8::Isolate * isolate, v8::Local <v8::External> data, v8::FunctionCallback func, char const * name);
58
- #line 113 "./src/util/macros.lzz"
58
+ #line 117 "./src/util/macros.lzz"
59
59
  void SetPrototypeMethod (v8::Isolate * isolate, v8::Local <v8::External> data, v8::Local <v8::FunctionTemplate> recv, char const * name, v8::FunctionCallback func);
60
- #line 126 "./src/util/macros.lzz"
60
+ #line 130 "./src/util/macros.lzz"
61
61
  void SetPrototypeSymbolMethod (v8::Isolate * isolate, v8::Local <v8::External> data, v8::Local <v8::FunctionTemplate> recv, v8::Local <v8::Symbol> symbol, v8::FunctionCallback func);
62
62
  #line 1 "./src/util/constants.lzz"
63
63
  class CS
@@ -277,9 +277,9 @@ private:
277
277
  #line 448 "./src/objects/database.lzz"
278
278
  static void JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info);
279
279
  #line 455 "./src/objects/database.lzz"
280
- static void JS_open (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
280
+ static void JS_open (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
281
281
  #line 459 "./src/objects/database.lzz"
282
- static void JS_inTransaction (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
282
+ static void JS_inTransaction (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
283
283
  #line 464 "./src/objects/database.lzz"
284
284
  static bool Deserialize (v8::Local <v8::Object> buffer, Addon * addon, sqlite3 * db_handle, bool readonly);
285
285
  #line 489 "./src/objects/database.lzz"
@@ -369,7 +369,7 @@ private:
369
369
  #line 278 "./src/objects/statement.lzz"
370
370
  static void JS_columns (v8::FunctionCallbackInfo <v8 :: Value> const & info);
371
371
  #line 321 "./src/objects/statement.lzz"
372
- static void JS_busy (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
372
+ static void JS_busy (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
373
373
  #line 326 "./src/objects/statement.lzz"
374
374
  Database * const db;
375
375
  #line 327 "./src/objects/statement.lzz"
@@ -811,58 +811,58 @@ struct Addon
811
811
  #line 63 "./src/better_sqlite3.lzz"
812
812
  std::set <Database*, Database::CompareDatabase> dbs;
813
813
  };
814
- #line 16 "./src/util/macros.lzz"
814
+ #line 20 "./src/util/macros.lzz"
815
815
  LZZ_INLINE v8::Local <v8::String> StringFromUtf8 (v8::Isolate * isolate, char const * data, int length)
816
- #line 16 "./src/util/macros.lzz"
816
+ #line 20 "./src/util/macros.lzz"
817
817
  {
818
- return v8::String::NewFromUtf8(isolate, data, v8::NewStringType::kNormal, length).ToLocalChecked();
818
+ return v8::String::NewFromUtf8(isolate, data, v8::NewStringType::kNormal, length).ToLocalChecked();
819
819
  }
820
- #line 19 "./src/util/macros.lzz"
820
+ #line 23 "./src/util/macros.lzz"
821
821
  LZZ_INLINE v8::Local <v8::String> InternalizedFromUtf8 (v8::Isolate * isolate, char const * data, int length)
822
- #line 19 "./src/util/macros.lzz"
822
+ #line 23 "./src/util/macros.lzz"
823
823
  {
824
- return v8::String::NewFromUtf8(isolate, data, v8::NewStringType::kInternalized, length).ToLocalChecked();
824
+ return v8::String::NewFromUtf8(isolate, data, v8::NewStringType::kInternalized, length).ToLocalChecked();
825
825
  }
826
- #line 22 "./src/util/macros.lzz"
826
+ #line 26 "./src/util/macros.lzz"
827
827
  LZZ_INLINE v8::Local <v8::Value> InternalizedFromUtf8OrNull (v8::Isolate * isolate, char const * data, int length)
828
- #line 22 "./src/util/macros.lzz"
828
+ #line 26 "./src/util/macros.lzz"
829
829
  {
830
- if (data == NULL) return v8::Null(isolate);
831
- return InternalizedFromUtf8(isolate, data, length);
830
+ if (data == NULL) return v8::Null(isolate);
831
+ return InternalizedFromUtf8(isolate, data, length);
832
832
  }
833
- #line 26 "./src/util/macros.lzz"
833
+ #line 30 "./src/util/macros.lzz"
834
834
  LZZ_INLINE v8::Local <v8::String> InternalizedFromLatin1 (v8::Isolate * isolate, char const * str)
835
- #line 26 "./src/util/macros.lzz"
835
+ #line 30 "./src/util/macros.lzz"
836
836
  {
837
- return v8::String::NewFromOneByte(isolate, reinterpret_cast<const uint8_t*>(str), v8::NewStringType::kInternalized).ToLocalChecked();
837
+ return v8::String::NewFromOneByte(isolate, reinterpret_cast<const uint8_t*>(str), v8::NewStringType::kInternalized).ToLocalChecked();
838
838
  }
839
- #line 30 "./src/util/macros.lzz"
839
+ #line 34 "./src/util/macros.lzz"
840
840
  LZZ_INLINE void SetFrozen (v8::Isolate * isolate, v8::Local <v8::Context> ctx, v8::Local <v8::Object> obj, v8::Global <v8::String> & key, v8::Local <v8::Value> value)
841
- #line 30 "./src/util/macros.lzz"
841
+ #line 34 "./src/util/macros.lzz"
842
842
  {
843
- obj->DefineOwnProperty(ctx, key.Get(isolate), value, static_cast<v8::PropertyAttribute>(v8::DontDelete | v8::ReadOnly)).FromJust();
843
+ obj->DefineOwnProperty(ctx, key.Get(isolate), value, static_cast<v8::PropertyAttribute>(v8::DontDelete | v8::ReadOnly)).FromJust();
844
844
  }
845
- #line 88 "./src/util/macros.lzz"
845
+ #line 92 "./src/util/macros.lzz"
846
846
  LZZ_INLINE bool IS_SKIPPED (char c)
847
- #line 88 "./src/util/macros.lzz"
847
+ #line 92 "./src/util/macros.lzz"
848
848
  {
849
- return c == ' ' || c == ';' || (c >= '\t' && c <= '\r');
849
+ return c == ' ' || c == ';' || (c >= '\t' && c <= '\r');
850
850
  }
851
- #line 93 "./src/util/macros.lzz"
851
+ #line 97 "./src/util/macros.lzz"
852
852
  template <typename T>
853
- #line 93 "./src/util/macros.lzz"
853
+ #line 97 "./src/util/macros.lzz"
854
854
  LZZ_INLINE T * ALLOC_ARRAY (size_t count)
855
- #line 93 "./src/util/macros.lzz"
855
+ #line 97 "./src/util/macros.lzz"
856
856
  {
857
- return static_cast<T*>(::operator new[](count * sizeof(T)));
857
+ return static_cast<T*>(::operator new[](count * sizeof(T)));
858
858
  }
859
- #line 98 "./src/util/macros.lzz"
859
+ #line 102 "./src/util/macros.lzz"
860
860
  template <typename T>
861
- #line 98 "./src/util/macros.lzz"
861
+ #line 102 "./src/util/macros.lzz"
862
862
  LZZ_INLINE void FREE_ARRAY (T * array_pointer)
863
- #line 98 "./src/util/macros.lzz"
863
+ #line 102 "./src/util/macros.lzz"
864
864
  {
865
- ::operator delete[](array_pointer);
865
+ ::operator delete[](array_pointer);
866
866
  }
867
867
  #line 9 "./src/util/bind-map.lzz"
868
868
  LZZ_INLINE int BindMap::Pair::GetIndex ()