1use strict;
2use warnings;
3no if $] >= 5.022, "warnings", "locale";
4use lib "t/lib";
5use SQLiteTest;
6use Test::More;
7use if -d ".git", "Test::FailWarnings";
8use DBI;
9
10my $dbh = connect_ok(RaiseError => 1, PrintError => 0);
11
12sub locale_tokenizer {
13  return sub {
14    my $string = shift;
15
16    use locale;
17    my $regex      = qr/\w+/;
18    my $term_index = 0;
19
20    return sub { # closure
21      $string =~ /$regex/g or return; # either match, or no more token
22      my ($start, $end) = ($-[0], $+[0]);
23      my $len           = $end-$start;
24      my $term          = substr($string, $start, $len);
25      return ($term, $len, $start, $end, $term_index++);
26    }
27  };
28}
29
30# "main::locale_tokenizer" is considered as another column name
31# because of the comma after "tokenize=perl"
32eval {
33  $dbh->do('CREATE VIRTUAL TABLE FIXMESSAGE USING FTS3(MESSAGE, tokenize=perl, "main::locale_tokenizer");');
34};
35ok $@, "cause an error but not segfault";
36
37done_testing;
38