aboutsummaryrefslogtreecommitdiff
blob: 4e45b139268b9f68a5a345145ebcac9d46c3a579 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# HG changeset patch
# User Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
# Date 1543532530 0
#      Thu Nov 29 23:02:10 2018 +0000
# Node ID 1c480085935783bd1d240860bb44f410e2d36322
# Parent  6453222232be364fb8ce3fd29b6cbcd480e5f2e3
Bug 1270882 - Enable support for SQLite custom FTS3 tokenizers at run time.

Do not require that SQLite has been built with support for custom FTS3
tokenizers enabled by default. This allows to use system SQLite in
distributions which provide SQLite configured in this way (which is SQLite
upstream's default configuration due to security concerns).

Disable no longer needed setting of SQLITE_ENABLE_FTS3_TOKENIZER macro in
bundled SQLite build.

--- a/db/sqlite3/src/moz.build	Thu Nov 29 19:08:28 2018 +0000
+++ b/db/sqlite3/src/moz.build	Thu Nov 29 23:02:10 2018 +0000
@@ -58,10 +58,6 @@
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
     DEFINES['SQLITE_ENABLE_LOCKING_STYLE'] = 0
 
-# Thunderbird needs the 2-argument version of fts3_tokenizer()
-if CONFIG['MOZ_THUNDERBIRD'] or CONFIG['MOZ_SUITE']:
-    DEFINES['SQLITE_ENABLE_FTS3_TOKENIZER'] = 1
-
 # Turn on SQLite's assertions in debug builds.
 if CONFIG['MOZ_DEBUG']:
     DEFINES['SQLITE_DEBUG'] = 1
--- a/storage/mozStorageConnection.cpp	Thu Nov 29 19:08:28 2018 +0000
+++ b/storage/mozStorageConnection.cpp	Thu Nov 29 23:02:10 2018 +0000
@@ -679,6 +679,10 @@
     return convertResultCode(srv);
   }
 
+#ifdef INIT_SQLITE_FTS3_TOKENIZER
+  ::sqlite3_db_config(mDBConn, SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, 1, 0);
+#endif
+
   // Do not set mDatabaseFile or mFileURL here since this is a "memory"
   // database.
 
@@ -715,6 +719,10 @@
     return convertResultCode(srv);
   }
 
+#ifdef INIT_SQLITE_FTS3_TOKENIZER
+  ::sqlite3_db_config(mDBConn, SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, 1, 0);
+#endif
+
   // Do not set mFileURL here since this is database does not have an associated
   // URL.
   mDatabaseFile = aDatabaseFile;
@@ -746,6 +754,10 @@
     return convertResultCode(srv);
   }
 
+#ifdef INIT_SQLITE_FTS3_TOKENIZER
+  ::sqlite3_db_config(mDBConn, SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, 1, 0);
+#endif
+
   // Set both mDatabaseFile and mFileURL here.
   mFileURL = aFileURL;
   mDatabaseFile = databaseFile;
--- a/storage/moz.build	2018-11-14 10:14:14.000000000 -0500
+++ b/storage/moz.build	2018-11-29 17:05:42.106058951 -0500
@@ -101,16 +101,20 @@
 #
 # Note: On Windows our sqlite build assumes we use jemalloc.  If you disable
 # MOZ_STORAGE_MEMORY on Windows, you will also need to change the "ifdef
 # MOZ_MEMORY" options in db/sqlite3/src/Makefile.in.
 if CONFIG['MOZ_MEMORY'] and not CONFIG['MOZ_SYSTEM_SQLITE']:
     if CONFIG['OS_TARGET'] != 'Android':
         DEFINES['MOZ_STORAGE_MEMORY'] = True
 
+# Thunderbird needs the 2-argument version of fts3_tokenizer()
+if CONFIG['MOZ_THUNDERBIRD'] or CONFIG['MOZ_SUITE']:
+    DEFINES['INIT_SQLITE_FTS3_TOKENIZER'] = 1
+
 # This is the default value.  If we ever change it when compiling sqlite, we
 # will need to change it here as well.
 DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000
 
 # See Sqlite moz.build for reasoning about TEMP_STORE.
 # For system sqlite we cannot use the compile time option, so we use a pragma.
 if CONFIG['MOZ_SYSTEM_SQLITE'] and (CONFIG['OS_TARGET'] == 'Android'
                                     or CONFIG['HAVE_64BIT_BUILD']):