1
0
Fork 0
mirror of https://github.com/DBD-SQLite/DBD-SQLite synced 2025-06-07 06:08:38 -04:00

Properly export the FTS5_ constants on demand

# Conflicts:
#	constants.inc
#	lib/DBD/SQLite/Constants.pm
#	util/constants.pl
This commit is contained in:
Max Maischein 2022-04-23 11:17:57 +02:00
parent a83a495af1
commit c23579d93a
5 changed files with 100 additions and 9 deletions

View file

@ -1293,6 +1293,7 @@ _const_flags_for_file_open_operations()
SQLITE_OPEN_READONLY = SQLITE_OPEN_READONLY
SQLITE_OPEN_READWRITE = SQLITE_OPEN_READWRITE
SQLITE_OPEN_CREATE = SQLITE_OPEN_CREATE
SQLITE_OPEN_SUPER_JOURNAL = SQLITE_OPEN_SUPER_JOURNAL
SQLITE_OPEN_NOMUTEX = SQLITE_OPEN_NOMUTEX
CODE:
RETVAL = ix;
@ -1471,6 +1472,19 @@ _const_flags_for_file_open_operations_3037000_zero()
#if SQLITE_VERSION_NUMBER >= 3008003
IV
_const_fts5_tokenizer()
ALIAS:
FTS5_TOKENIZE_QUERY = FTS5_TOKENIZE_QUERY
FTS5_TOKENIZE_PREFIX = FTS5_TOKENIZE_PREFIX
FTS5_TOKENIZE_DOCUMENT = FTS5_TOKENIZE_DOCUMENT
FTS5_TOKENIZE_AUX = FTS5_TOKENIZE_AUX
FTS5_TOKEN_COLOCATED = FTS5_TOKEN_COLOCATED
CODE:
RETVAL = ix;
OUTPUT:
RETVAL
IV
_const_function_flags_3008003()
ALIAS:
@ -1820,6 +1834,7 @@ _const__flags_for_file_open_operations()
OPEN_READONLY = SQLITE_OPEN_READONLY
OPEN_READWRITE = SQLITE_OPEN_READWRITE
OPEN_CREATE = SQLITE_OPEN_CREATE
OPEN_SUPER_JOURNAL = SQLITE_OPEN_SUPER_JOURNAL
OPEN_NOMUTEX = SQLITE_OPEN_NOMUTEX
CODE:
RETVAL = ix;

View file

@ -190,6 +190,15 @@ our @EXPORT_OK = (
SQLITE_OPEN_URI
/,
# fts5_tokenizer
qw/
FTS5_TOKENIZE_AUX
FTS5_TOKENIZE_DOCUMENT
FTS5_TOKENIZE_PREFIX
FTS5_TOKENIZE_QUERY
FTS5_TOKEN_COLOCATED
/,
# function_flags
qw/
SQLITE_DETERMINISTIC
@ -357,6 +366,11 @@ our %EXPORT_TAGS = (
SQLITE_ERROR_SNAPSHOT
SQLITE_FLOAT
SQLITE_FORMAT
FTS5_TOKENIZE_AUX
FTS5_TOKENIZE_DOCUMENT
FTS5_TOKENIZE_PREFIX
FTS5_TOKENIZE_QUERY
FTS5_TOKEN_COLOCATED
SQLITE_FULL
SQLITE_FUNCTION
SQLITE_IGNORE
@ -650,6 +664,14 @@ our %EXPORT_TAGS = (
SQLITE_OPEN_URI
/],
fts5_tokenizer => [qw/
FTS5_TOKENIZE_AUX
FTS5_TOKENIZE_DOCUMENT
FTS5_TOKENIZE_PREFIX
FTS5_TOKENIZE_QUERY
FTS5_TOKEN_COLOCATED
/],
function_flags => [qw/
SQLITE_DETERMINISTIC
SQLITE_DIRECTONLY
@ -736,7 +758,7 @@ DBD::SQLite::Constants - common SQLite constants
=head1 DESCRIPTION
You can import necessary SQLite constants from this module. Available tags are C<all>, C<allowed_return_values_from_sqlite3_txn_state>, C<authorizer_action_codes>, C<authorizer_return_codes>, C<version> (C<compile_time_library_version_numbers>), C<database_connection_configuration_options>, C<dbd_sqlite_string_mode>, C<extended_result_codes>, C<file_open> (C<flags_for_file_open_operations>), C<function_flags>, C<datatypes> (C<fundamental_datatypes>), C<result_codes>, C<run_time_limit_categories>. See L<http://sqlite.org/c3ref/constlist.html> for the complete list of constants.
You can import necessary SQLite constants from this module. Available tags are C<all>, C<allowed_return_values_from_sqlite3_txn_state>, C<authorizer_action_codes>, C<authorizer_return_codes>, C<version> (C<compile_time_library_version_numbers>), C<database_connection_configuration_options>, C<dbd_sqlite_string_mode>, C<extended_result_codes>, C<file_open> (C<flags_for_file_open_operations>), C<fts5_tokenizer>, C<function_flags>, C<datatypes> (C<fundamental_datatypes>), C<result_codes>, C<run_time_limit_categories>. See L<http://sqlite.org/c3ref/constlist.html> for the complete list of constants.
This module does not export anything by default.
@ -1078,6 +1100,8 @@ This module does not export anything by default.
=item SQLITE_OPEN_CREATE
=item SQLITE_OPEN_SUPER_JOURNAL
=item SQLITE_OPEN_NOMUTEX
=item SQLITE_OPEN_FULLMUTEX
@ -1098,6 +1122,22 @@ This module does not export anything by default.
=back
=head2 fts5_tokenizer
=over 4
=item SQLITE_FTS5_TOKENIZE_QUERY
=item SQLITE_FTS5_TOKENIZE_PREFIX
=item SQLITE_FTS5_TOKENIZE_DOCUMENT
=item SQLITE_FTS5_TOKENIZE_AUX
=item SQLITE_FTS5_TOKEN_COLOCATED
=back
=head2 function_flags
=over 4

View file

@ -48,6 +48,8 @@ BEGIN {
}
}
use DBD::SQLite::Constants ':fts5_tokenizer';
use locale;
sub locale_tokenizer { # see also: Search::Tokenizer
@ -59,14 +61,13 @@ sub locale_tokenizer { # see also: Search::Tokenizer
while( $string =~ /$regex/g) {
my ($start, $end) = ($-[0], $+[0]);
my $term = substr($string, $start, my $len = $end-$start);
my $flags = 0; # SQLITE_FTS5_TOKEN;
my $flags = 0;
#my $flags = FTS5_TOKEN_COLOCATED;
DBD::SQLite::db::fts5_xToken($ctx,$flags,$term,$start,$end);
};
};
}
use DBD::SQLite;
for my $use_unicode (0, 1) {
# connect

View file

@ -143,6 +143,11 @@ my %since = (
STMTSTATUS_RUN => '3020000',
STMTSTATUS_MEMUSED => '3020000',
DBCONFIG_ENABLE_QPSG => '3020000',
SQLITE_FTS5_TOKEN => '3020000',
FTS5_TOKENIZE_QUERY => '3020000',
FTS5_TOKENIZE_PREFIX => '3020000',
FTS5_TOKENIZE_DOCUMENT => '3020000',
FTS5_TOKENIZE_AUX => '3020000',
IOERR_BEGIN_ATOMIC => '3021000',
IOERR_COMMIT_ATOMIC => '3021000',
IOERR_ROLLBACK_ATOMIC => '3021000',
@ -313,6 +318,17 @@ sub extract_constants {
}
unshift @{$constants{_authorizer_return_codes}}, 'OK';
# Fudge in the FTS5 constants, as these don't follow the common pattern
$constants{fts5_tokenizer} ||= [];
push @{$constants{fts5_tokenizer}},
'FTS5_TOKENIZE_QUERY',
'FTS5_TOKENIZE_PREFIX',
'FTS5_TOKENIZE_DOCUMENT',
'FTS5_TOKENIZE_AUX',
'FTS5_TOKEN_COLOCATED'
;
%constants;
}
@ -335,7 +351,7 @@ sub srcdir {
sub download_url {
my $version = shift;
my $year = $version->year;
join '',
join '',
"http://www.sqlite.org/",
($version->year ? $version->year."/" : ""),
"sqlite-".($version->archive_type)."-$version".$version->extension;

View file

@ -26,6 +26,7 @@ my @dbd_sqlite_constants = (
);
my %constants = extract_constants();
write_inc(%constants);
write_pm(%constants);
@ -86,9 +87,18 @@ _const_$tag()
END
for my $name (@$list) {
my $prefix = $tag =~ /^_/ ? "" : "SQLITE_";
my $prefix;
my $prefix2 = "SQLITE_";
if( $tag =~ /^_/ ) {
$prefix = "";
} elsif( $tag =~ /^fts5_/ ) {
$prefix = "";
$prefix2 = "";
} else {
$prefix = "SQLITE_";
};
print $fh <<"END";
$prefix$name = SQLITE_$name
$prefix$name = $prefix2$name
END
}
@ -111,7 +121,16 @@ END
my $ix = 1;
for my $name (@{$constants{$tag}}) {
my $prefix = $tag =~ /^_/ ? "" : "SQLITE_";
my $prefix;
my $prefix2 = "SQLITE_";
if( $tag =~ /^_/ ) {
$prefix = "";
} elsif( $tag =~ /^fts5_/ ) {
$prefix = "";
$prefix2 = "";
} else {
$prefix = "SQLITE_";
};
print $fh <<"END";
$prefix$name = $ix
END
@ -166,7 +185,7 @@ END
print $fh <<"END";
# $tag
qw/
@{[join "\n", map {" SQLITE_$_"} sort @{$constants{$tag}}]}
@{[join "\n", map {/^FTS5_/ ? " $_" : " SQLITE_$_"} sort @{$constants{$tag}}]}
/,
END