mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-07 14:19:10 -04:00
Compare commits
25 commits
Author | SHA1 | Date | |
---|---|---|---|
|
60515b30f8 | ||
|
6f99c8ce41 | ||
|
db7ea91d83 | ||
|
4ac600434f | ||
|
41957ce749 | ||
|
29167a0d65 | ||
|
fb80b73a8a | ||
|
c5374438f4 | ||
|
2ab93a4e41 | ||
|
3e8df90227 | ||
|
b433d17436 | ||
|
9014dd6f35 | ||
|
922c82b0ea | ||
|
01615f8630 | ||
|
fea0e3268f | ||
|
d4bb44460f | ||
|
f9e3cb6b75 | ||
|
3f66a57dd4 | ||
|
7e63e18472 | ||
|
c08f3400e8 | ||
|
f764a74395 | ||
|
ad5125d99d | ||
|
dd62355f48 | ||
|
0dc561d920 | ||
|
1f413acd88 |
12 changed files with 27811 additions and 11083 deletions
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
|
@ -15,10 +15,10 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
perl-version:
|
||||
- '5.8'
|
||||
- '5.10'
|
||||
- '5.18'
|
||||
- '5.20'
|
||||
- '5.8-buster'
|
||||
- '5.10-buster'
|
||||
- '5.18-buster'
|
||||
- '5.20-buster'
|
||||
- '5.26'
|
||||
- 'latest'
|
||||
|
||||
|
@ -26,7 +26,7 @@ jobs:
|
|||
image: perl:${{ matrix.perl-version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v4
|
||||
- name: perl -V
|
||||
run: perl -V
|
||||
- name: Install dependencies
|
||||
|
|
15
Changes
15
Changes
|
@ -1,5 +1,20 @@
|
|||
Changes for Perl extension DBD-SQLite
|
||||
|
||||
1.76 2024-10-19
|
||||
- Switched to a production version
|
||||
|
||||
1.75_01 2024-09-17
|
||||
- Upgraded SQLite to 3.46.1
|
||||
- Fix for Windows quadmath builds (GH#115, sisyphus++)
|
||||
- Omit load_extension if static build
|
||||
|
||||
1.74 2023-09-20
|
||||
- Switched to a production version
|
||||
|
||||
1.73_01 2023-07-09
|
||||
- Upgraded SQLite to 3.42.0
|
||||
- Add missing possible table_type values to POD (GH#105, dboehmer++)
|
||||
|
||||
1.72 2022-11-04
|
||||
- Switched to a production version
|
||||
|
||||
|
|
|
@ -288,6 +288,10 @@ if ($^O =~ /bsd/i && $^O !~ /(?:open|net)bsd/) {
|
|||
push @CC_DEFINE, '-D_XOPEN_SOURCE';
|
||||
}
|
||||
|
||||
if (!$Config{usedl}) {
|
||||
push @CC_DEFINE, '-DSQLITE_OMIT_LOAD_EXTENSION';
|
||||
}
|
||||
|
||||
my (@CCFLAGS, @LDFLAGS, @LDDLFLAGS);
|
||||
|
||||
if ($ENV{TEST_DBD_SQLITE_WITH_ASAN}) {
|
||||
|
|
|
@ -493,6 +493,32 @@ _const_database_connection_configuration_options_3031000_zero()
|
|||
|
||||
#endif
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3042000
|
||||
|
||||
IV
|
||||
_const_database_connection_configuration_options_3042000()
|
||||
ALIAS:
|
||||
SQLITE_DBCONFIG_STMT_SCANSTATUS = SQLITE_DBCONFIG_STMT_SCANSTATUS
|
||||
SQLITE_DBCONFIG_REVERSE_SCANORDER = SQLITE_DBCONFIG_REVERSE_SCANORDER
|
||||
CODE:
|
||||
RETVAL = ix;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#else
|
||||
|
||||
IV
|
||||
_const_database_connection_configuration_options_3042000_zero()
|
||||
ALIAS:
|
||||
SQLITE_DBCONFIG_STMT_SCANSTATUS = 1
|
||||
SQLITE_DBCONFIG_REVERSE_SCANORDER = 2
|
||||
CODE:
|
||||
RETVAL = 0;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#endif
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3006002
|
||||
|
||||
IV
|
||||
|
@ -1213,6 +1239,54 @@ _const_extended_result_codes_3037000_zero()
|
|||
|
||||
#endif
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3041000
|
||||
|
||||
IV
|
||||
_const_extended_result_codes_3041000()
|
||||
ALIAS:
|
||||
SQLITE_NOTICE_RBU = SQLITE_NOTICE_RBU
|
||||
CODE:
|
||||
RETVAL = ix;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#else
|
||||
|
||||
IV
|
||||
_const_extended_result_codes_3041000_zero()
|
||||
ALIAS:
|
||||
SQLITE_NOTICE_RBU = 1
|
||||
CODE:
|
||||
RETVAL = 0;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#endif
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3043000
|
||||
|
||||
IV
|
||||
_const_extended_result_codes_3043000()
|
||||
ALIAS:
|
||||
SQLITE_IOERR_IN_PAGE = SQLITE_IOERR_IN_PAGE
|
||||
CODE:
|
||||
RETVAL = ix;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#else
|
||||
|
||||
IV
|
||||
_const_extended_result_codes_3043000_zero()
|
||||
ALIAS:
|
||||
SQLITE_IOERR_IN_PAGE = 1
|
||||
CODE:
|
||||
RETVAL = 0;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#endif
|
||||
|
||||
IV
|
||||
_const_flags_for_file_open_operations()
|
||||
ALIAS:
|
||||
|
@ -1469,6 +1543,30 @@ _const_function_flags_3031000_zero()
|
|||
|
||||
#endif
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3044001
|
||||
|
||||
IV
|
||||
_const_function_flags_3044001()
|
||||
ALIAS:
|
||||
SQLITE_RESULT_SUBTYPE = SQLITE_RESULT_SUBTYPE
|
||||
CODE:
|
||||
RETVAL = ix;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#else
|
||||
|
||||
IV
|
||||
_const_function_flags_3044001_zero()
|
||||
ALIAS:
|
||||
SQLITE_RESULT_SUBTYPE = 1
|
||||
CODE:
|
||||
RETVAL = 0;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
#endif
|
||||
|
||||
IV
|
||||
_const_fundamental_datatypes()
|
||||
ALIAS:
|
||||
|
|
8
dbdimp.c
8
dbdimp.c
|
@ -407,10 +407,16 @@ sqlite_is_number(pTHX_ const char *v, int sql_type)
|
|||
if (sql_type != SQLITE_INTEGER) {
|
||||
#ifdef USE_QUADMATH
|
||||
sprintf(format, (has_plus ? "+%%.%dQf" : "%%.%dQf"), precision);
|
||||
# if defined(WIN32)
|
||||
/* On Windows quadmath, we need to use strtoflt128(), not atov() */
|
||||
if (strEQ(form(format, strtoflt128(v, NULL)), v)) return 2;
|
||||
# else
|
||||
if (strEQ(form(format, atof(v)), v)) return 2;
|
||||
# endif
|
||||
#else
|
||||
sprintf(format, (has_plus ? "+%%.%df" : "%%.%df" ), precision);
|
||||
#endif
|
||||
if (strEQ(form(format, atof(v)), v)) return 2;
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ use strict;
|
|||
use DBI 1.57 ();
|
||||
use XSLoader ();
|
||||
|
||||
our $VERSION = '1.72';
|
||||
our $VERSION = '1.76';
|
||||
|
||||
# sqlite_version cache (set in the XS bootstrap)
|
||||
our ($sqlite_version, $sqlite_version_number);
|
||||
|
@ -1074,7 +1074,7 @@ are limited by the typeless nature of the SQLite database.
|
|||
=head1 SQLITE VERSION
|
||||
|
||||
DBD::SQLite is usually compiled with a bundled SQLite library
|
||||
(SQLite version S<3.39.4> as of this release) for consistency.
|
||||
(SQLite version S<3.46.1> as of this release) for consistency.
|
||||
However, a different version of SQLite may sometimes be used for
|
||||
some reasons like security, or some new experimental features.
|
||||
|
||||
|
@ -1749,7 +1749,8 @@ Returns all tables and schemas (databases) as specified in L<DBI/table_info>.
|
|||
The schema and table arguments will do a C<LIKE> search. You can specify an
|
||||
ESCAPE character by including an 'Escape' attribute in \%attr. The C<$type>
|
||||
argument accepts a comma separated list of the following types 'TABLE',
|
||||
'VIEW', 'LOCAL TEMPORARY' and 'SYSTEM TABLE' (by default all are returned).
|
||||
'INDEX', 'VIEW', 'TRIGGER', 'LOCAL TEMPORARY' and 'SYSTEM TABLE'
|
||||
(by default all are returned).
|
||||
Note that a statement handle is returned, and not a direct list of tables.
|
||||
|
||||
The following fields are returned:
|
||||
|
@ -1762,8 +1763,8 @@ databases will be in the name given when the database was attached.
|
|||
|
||||
B<TABLE_NAME>: The name of the table or view.
|
||||
|
||||
B<TABLE_TYPE>: The type of object returned. Will be one of 'TABLE', 'VIEW',
|
||||
'LOCAL TEMPORARY' or 'SYSTEM TABLE'.
|
||||
B<TABLE_TYPE>: The type of object returned. Will be one of 'TABLE', 'INDEX',
|
||||
'VIEW', 'TRIGGER', 'LOCAL TEMPORARY' or 'SYSTEM TABLE'.
|
||||
|
||||
=head2 primary_key, primary_key_info
|
||||
|
||||
|
|
|
@ -87,6 +87,8 @@ our @EXPORT_OK = (
|
|||
SQLITE_DBCONFIG_MAX
|
||||
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE
|
||||
SQLITE_DBCONFIG_RESET_DATABASE
|
||||
SQLITE_DBCONFIG_REVERSE_SCANORDER
|
||||
SQLITE_DBCONFIG_STMT_SCANSTATUS
|
||||
SQLITE_DBCONFIG_TRIGGER_EQP
|
||||
SQLITE_DBCONFIG_TRUSTED_SCHEMA
|
||||
SQLITE_DBCONFIG_WRITABLE_SCHEMA
|
||||
|
@ -140,6 +142,7 @@ our @EXPORT_OK = (
|
|||
SQLITE_IOERR_FSTAT
|
||||
SQLITE_IOERR_FSYNC
|
||||
SQLITE_IOERR_GETTEMPPATH
|
||||
SQLITE_IOERR_IN_PAGE
|
||||
SQLITE_IOERR_LOCK
|
||||
SQLITE_IOERR_MMAP
|
||||
SQLITE_IOERR_NOMEM
|
||||
|
@ -158,6 +161,7 @@ our @EXPORT_OK = (
|
|||
SQLITE_IOERR_WRITE
|
||||
SQLITE_LOCKED_SHAREDCACHE
|
||||
SQLITE_LOCKED_VTAB
|
||||
SQLITE_NOTICE_RBU
|
||||
SQLITE_NOTICE_RECOVER_ROLLBACK
|
||||
SQLITE_NOTICE_RECOVER_WAL
|
||||
SQLITE_OK_SYMLINK
|
||||
|
@ -191,6 +195,7 @@ our @EXPORT_OK = (
|
|||
SQLITE_DETERMINISTIC
|
||||
SQLITE_DIRECTONLY
|
||||
SQLITE_INNOCUOUS
|
||||
SQLITE_RESULT_SUBTYPE
|
||||
SQLITE_SUBTYPE
|
||||
/,
|
||||
|
||||
|
@ -320,6 +325,8 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_DBCONFIG_MAX
|
||||
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE
|
||||
SQLITE_DBCONFIG_RESET_DATABASE
|
||||
SQLITE_DBCONFIG_REVERSE_SCANORDER
|
||||
SQLITE_DBCONFIG_STMT_SCANSTATUS
|
||||
SQLITE_DBCONFIG_TRIGGER_EQP
|
||||
SQLITE_DBCONFIG_TRUSTED_SCHEMA
|
||||
SQLITE_DBCONFIG_WRITABLE_SCHEMA
|
||||
|
@ -376,6 +383,7 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_IOERR_FSTAT
|
||||
SQLITE_IOERR_FSYNC
|
||||
SQLITE_IOERR_GETTEMPPATH
|
||||
SQLITE_IOERR_IN_PAGE
|
||||
SQLITE_IOERR_LOCK
|
||||
SQLITE_IOERR_MMAP
|
||||
SQLITE_IOERR_NOMEM
|
||||
|
@ -414,6 +422,7 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_NOTADB
|
||||
SQLITE_NOTFOUND
|
||||
SQLITE_NOTICE
|
||||
SQLITE_NOTICE_RBU
|
||||
SQLITE_NOTICE_RECOVER_ROLLBACK
|
||||
SQLITE_NOTICE_RECOVER_WAL
|
||||
SQLITE_NULL
|
||||
|
@ -445,6 +454,7 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_READONLY_ROLLBACK
|
||||
SQLITE_RECURSIVE
|
||||
SQLITE_REINDEX
|
||||
SQLITE_RESULT_SUBTYPE
|
||||
SQLITE_ROW
|
||||
SQLITE_SAVEPOINT
|
||||
SQLITE_SCHEMA
|
||||
|
@ -531,6 +541,8 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_DBCONFIG_MAX
|
||||
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE
|
||||
SQLITE_DBCONFIG_RESET_DATABASE
|
||||
SQLITE_DBCONFIG_REVERSE_SCANORDER
|
||||
SQLITE_DBCONFIG_STMT_SCANSTATUS
|
||||
SQLITE_DBCONFIG_TRIGGER_EQP
|
||||
SQLITE_DBCONFIG_TRUSTED_SCHEMA
|
||||
SQLITE_DBCONFIG_WRITABLE_SCHEMA
|
||||
|
@ -591,6 +603,7 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_IOERR_FSTAT
|
||||
SQLITE_IOERR_FSYNC
|
||||
SQLITE_IOERR_GETTEMPPATH
|
||||
SQLITE_IOERR_IN_PAGE
|
||||
SQLITE_IOERR_LOCK
|
||||
SQLITE_IOERR_MMAP
|
||||
SQLITE_IOERR_NOMEM
|
||||
|
@ -609,6 +622,7 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_IOERR_WRITE
|
||||
SQLITE_LOCKED_SHAREDCACHE
|
||||
SQLITE_LOCKED_VTAB
|
||||
SQLITE_NOTICE_RBU
|
||||
SQLITE_NOTICE_RECOVER_ROLLBACK
|
||||
SQLITE_NOTICE_RECOVER_WAL
|
||||
SQLITE_OK_SYMLINK
|
||||
|
@ -640,6 +654,7 @@ our %EXPORT_TAGS = (
|
|||
SQLITE_DETERMINISTIC
|
||||
SQLITE_DIRECTONLY
|
||||
SQLITE_INNOCUOUS
|
||||
SQLITE_RESULT_SUBTYPE
|
||||
SQLITE_SUBTYPE
|
||||
/],
|
||||
|
||||
|
@ -873,6 +888,10 @@ This module does not export anything by default.
|
|||
|
||||
=item SQLITE_DBCONFIG_TRUSTED_SCHEMA
|
||||
|
||||
=item SQLITE_DBCONFIG_STMT_SCANSTATUS
|
||||
|
||||
=item SQLITE_DBCONFIG_REVERSE_SCANORDER
|
||||
|
||||
=back
|
||||
|
||||
=head2 dbd_sqlite_string_mode
|
||||
|
@ -1043,6 +1062,10 @@ This module does not export anything by default.
|
|||
|
||||
=item SQLITE_CONSTRAINT_DATATYPE
|
||||
|
||||
=item SQLITE_NOTICE_RBU
|
||||
|
||||
=item SQLITE_IOERR_IN_PAGE
|
||||
|
||||
=back
|
||||
|
||||
=head2 file_open (flags_for_file_open_operations)
|
||||
|
@ -1087,6 +1110,8 @@ This module does not export anything by default.
|
|||
|
||||
=item SQLITE_INNOCUOUS
|
||||
|
||||
=item SQLITE_RESULT_SUBTYPE
|
||||
|
||||
=back
|
||||
|
||||
=head2 datatypes (fundamental_datatypes)
|
||||
|
|
|
@ -5,7 +5,7 @@ use strict;
|
|||
use warnings;
|
||||
use Scalar::Util qw/weaken/;
|
||||
|
||||
our $VERSION = '1.72';
|
||||
our $VERSION = '1.76';
|
||||
our @ISA;
|
||||
|
||||
|
||||
|
|
22
sqlite3ext.h
22
sqlite3ext.h
|
@ -331,9 +331,9 @@ struct sqlite3_api_routines {
|
|||
const char *(*filename_journal)(const char*);
|
||||
const char *(*filename_wal)(const char*);
|
||||
/* Version 3.32.0 and later */
|
||||
char *(*create_filename)(const char*,const char*,const char*,
|
||||
const char *(*create_filename)(const char*,const char*,const char*,
|
||||
int,const char**);
|
||||
void (*free_filename)(char*);
|
||||
void (*free_filename)(const char*);
|
||||
sqlite3_file *(*database_file_object)(const char*);
|
||||
/* Version 3.34.0 and later */
|
||||
int (*txn_state)(sqlite3*,const char*);
|
||||
|
@ -357,6 +357,15 @@ struct sqlite3_api_routines {
|
|||
unsigned char *(*serialize)(sqlite3*,const char *,sqlite3_int64*,
|
||||
unsigned int);
|
||||
const char *(*db_name)(sqlite3*,int);
|
||||
/* Version 3.40.0 and later */
|
||||
int (*value_encoding)(sqlite3_value*);
|
||||
/* Version 3.41.0 and later */
|
||||
int (*is_interrupted)(sqlite3*);
|
||||
/* Version 3.43.0 and later */
|
||||
int (*stmt_explain)(sqlite3_stmt*,int);
|
||||
/* Version 3.44.0 and later */
|
||||
void *(*get_clientdata)(sqlite3*,const char*);
|
||||
int (*set_clientdata)(sqlite3*, const char*, void*, void(*)(void*));
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -681,6 +690,15 @@ typedef int (*sqlite3_loadext_entry)(
|
|||
#define sqlite3_serialize sqlite3_api->serialize
|
||||
#endif
|
||||
#define sqlite3_db_name sqlite3_api->db_name
|
||||
/* Version 3.40.0 and later */
|
||||
#define sqlite3_value_encoding sqlite3_api->value_encoding
|
||||
/* Version 3.41.0 and later */
|
||||
#define sqlite3_is_interrupted sqlite3_api->is_interrupted
|
||||
/* Version 3.43.0 and later */
|
||||
#define sqlite3_stmt_explain sqlite3_api->stmt_explain
|
||||
/* Version 3.44.0 and later */
|
||||
#define sqlite3_get_clientdata sqlite3_api->get_clientdata
|
||||
#define sqlite3_set_clientdata sqlite3_api->set_clientdata
|
||||
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
||||
|
||||
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
||||
|
|
|
@ -187,6 +187,11 @@ my %since = (
|
|||
SESSION_OBJCONFIG_SIZE => '3036000',
|
||||
CONSTRAINT_DATATYPE => '3037000',
|
||||
OPEN_EXRESCODE => '3037000',
|
||||
NOTICE_RBU => '3041000',
|
||||
DBCONFIG_STMT_SCANSTATUS => '3042000',
|
||||
DBCONFIG_REVERSE_SCANORDER => '3042000',
|
||||
IOERR_IN_PAGE => '3043000',
|
||||
RESULT_SUBTYPE => '3044001',
|
||||
|
||||
status_parameters_for_prepared_statements => '3006004',
|
||||
extended_result_codes => '3006005',
|
||||
|
@ -233,6 +238,7 @@ my $ignore_tag_re = join '|', (
|
|||
'prepare_flags', # for sqlite3_prepare_v3
|
||||
|
||||
'delete_a_session_object',
|
||||
'prepared_statement_scan_status',
|
||||
|
||||
# status flags (status methods are read-only at the moment)
|
||||
'status_parameters',
|
||||
|
@ -259,6 +265,7 @@ my $ignore_tag_re = join '|', (
|
|||
'text_encodings',
|
||||
'virtual_table_constraint_operator_codes',
|
||||
'virtual_table_indexing_information',
|
||||
'options_for_sqlite3session_object_config',
|
||||
);
|
||||
|
||||
my %compat = map {$_ => 1} qw/
|
||||
|
@ -471,6 +478,8 @@ sub year {
|
|||
my $self = shift;
|
||||
return "snapshot" if $self->is_snapshot;
|
||||
my $version = $self->as_num;
|
||||
return 2024 if $version >= 3450000;
|
||||
return 2023 if $version >= 3410000;
|
||||
return 2022 if $version >= 3370200;
|
||||
return 2021 if $version >= 3340100;
|
||||
return 2020 if $version >= 3310000;
|
||||
|
|
Loading…
Add table
Reference in a new issue