@@ -81,3 +81,47 @@ func TestFTS3(t *testing.T) {
81
81
t .Fatal ("Result should be only one" )
82
82
}
83
83
}
84
+
85
+ func TestFTS4 (t * testing.T ) {
86
+ tempFilename := TempFilename ()
87
+ db , err := sql .Open ("sqlite3" , tempFilename )
88
+ if err != nil {
89
+ t .Fatal ("Failed to open database:" , err )
90
+ }
91
+ defer os .Remove (tempFilename )
92
+ defer db .Close ()
93
+
94
+ _ , err = db .Exec ("DROP TABLE foo" )
95
+ _ , err = db .Exec ("CREATE VIRTUAL TABLE foo USING fts4(tokenize=unicode61, id INTEGER PRIMARY KEY, value TEXT)" )
96
+ if err != nil {
97
+ t .Fatal ("Failed to create table:" , err )
98
+ }
99
+
100
+ _ , err = db .Exec ("INSERT INTO foo(id, value) VALUES(?, ?)" , 1 , `février` )
101
+ if err != nil {
102
+ t .Fatal ("Failed to insert value:" , err )
103
+ }
104
+
105
+ rows , err := db .Query ("SELECT value FROM foo WHERE value MATCH 'fevrier'" )
106
+ if err != nil {
107
+ t .Fatal ("Unable to query foo table:" , err )
108
+ }
109
+ defer rows .Close ()
110
+
111
+ var value string
112
+ if ! rows .Next () {
113
+ t .Fatal ("Result should be only one" )
114
+ }
115
+
116
+ if err := rows .Scan (& value ); err != nil {
117
+ t .Fatal ("Unable to scan results:" , err )
118
+ }
119
+
120
+ if value != `février` {
121
+ t .Fatal ("Value should be `février`, but:" , value )
122
+ }
123
+
124
+ if rows .Next () {
125
+ t .Fatal ("Result should be only one" )
126
+ }
127
+ }
0 commit comments