summaryrefslogtreecommitdiff
path: root/t/rt_73159_fts_tokenizer_segfault.t
diff options
context:
space:
mode:
Diffstat (limited to 't/rt_73159_fts_tokenizer_segfault.t')
-rw-r--r--t/rt_73159_fts_tokenizer_segfault.t38
1 files changed, 38 insertions, 0 deletions
diff --git a/t/rt_73159_fts_tokenizer_segfault.t b/t/rt_73159_fts_tokenizer_segfault.t
new file mode 100644
index 0000000..6f4d7bf
--- /dev/null
+++ b/t/rt_73159_fts_tokenizer_segfault.t
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+use strict;
+BEGIN {
+ $| = 1;
+ $^W = 1;
+}
+
+use t::lib::Test;
+use Test::More tests => 2;
+use DBI;
+
+my $dbh = connect_ok(RaiseError => 1, PrintError => 0);
+
+sub locale_tokenizer {
+ return sub {
+ my $string = shift;
+
+ use locale;
+ my $regex = qr/\w+/;
+ my $term_index = 0;
+
+ return sub { # closure
+ $string =~ /$regex/g or return; # either match, or no more token
+ my ($start, $end) = ($-[0], $+[0]);
+ my $len = $end-$start;
+ my $term = substr($string, $start, $len);
+ return ($term, $len, $start, $end, $term_index++);
+ }
+ };
+}
+
+# "main::locale_tokenizer" is considered as another column name
+# because of the comma after "tokenize=perl"
+eval {
+ $dbh->do('CREATE VIRTUAL TABLE FIXMESSAGE USING FTS3(MESSAGE, tokenize=perl, "main::locale_tokenizer");');
+};
+ok $@, "cause an error but not segfault";