Blame t/rt_73159_fts_tokenizer_segfault.t

Packit 723767
#!/usr/bin/perl
Packit 723767

Packit 723767
use strict;
Packit 723767
BEGIN {
Packit 723767
	$|  = 1;
Packit 723767
	$^W = 1;
Packit 723767
}
Packit 723767

Packit 723767
use lib "t/lib";
Packit 723767
use SQLiteTest;
Packit 723767
use Test::More tests => 2;
Packit 723767
use DBI;
Packit 723767

Packit 723767
my $dbh = connect_ok(RaiseError => 1, PrintError => 0);
Packit 723767

Packit 723767
sub locale_tokenizer {
Packit 723767
  return sub {
Packit 723767
    my $string = shift;
Packit 723767

Packit 723767
    use locale;
Packit 723767
    my $regex      = qr/\w+/;
Packit 723767
    my $term_index = 0;
Packit 723767

Packit 723767
    return sub { # closure
Packit 723767
      $string =~ /$regex/g or return; # either match, or no more token
Packit 723767
      my ($start, $end) = ($-[0], $+[0]);
Packit 723767
      my $len           = $end-$start;
Packit 723767
      my $term          = substr($string, $start, $len);
Packit 723767
      return ($term, $len, $start, $end, $term_index++);
Packit 723767
    }
Packit 723767
  };
Packit 723767
}
Packit 723767

Packit 723767
# "main::locale_tokenizer" is considered as another column name
Packit 723767
# because of the comma after "tokenize=perl"
Packit 723767
eval {
Packit 723767
  $dbh->do('CREATE VIRTUAL TABLE FIXMESSAGE USING FTS3(MESSAGE, tokenize=perl, "main::locale_tokenizer");');
Packit 723767
};
Packit 723767
ok $@, "cause an error but not segfault";