Adjust to sqlite-3.22.0 (bug #1543286)
This commit is contained in:
parent
2650c3cfbf
commit
b184cfb665
@ -0,0 +1,80 @@
|
||||
From da3306e443661f3a291367166ae3e2080acd5c45 Mon Sep 17 00:00:00 2001
|
||||
From: Kenichi Ishigaki <ishigaki@cpan.org>
|
||||
Date: Tue, 21 Nov 2017 03:25:30 +0900
|
||||
Subject: [PATCH] added new index constraint ops introduced in SQLite 3.21.0 to
|
||||
PerlData (GH#28)
|
||||
|
||||
---
|
||||
dbdimp_virtual_table.inc | 12 ++++++++++++
|
||||
lib/DBD/SQLite/VirtualTable/PerlData.pm | 18 +++++++++++++++++-
|
||||
2 files changed, 29 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dbdimp_virtual_table.inc b/dbdimp_virtual_table.inc
|
||||
index 3dfb3c5..3f87619 100644
|
||||
--- a/dbdimp_virtual_table.inc
|
||||
+++ b/dbdimp_virtual_table.inc
|
||||
@@ -194,6 +194,18 @@ _constraint_op_to_string(unsigned char op) {
|
||||
return "GLOB";
|
||||
case SQLITE_INDEX_CONSTRAINT_REGEXP:
|
||||
return "REGEXP";
|
||||
+#endif
|
||||
+#if SQLITE_VERSION_NUMBER >= 3021000
|
||||
+ case SQLITE_INDEX_CONSTRAINT_NE:
|
||||
+ return "NE";
|
||||
+ case SQLITE_INDEX_CONSTRAINT_ISNOT:
|
||||
+ return "ISNOT";
|
||||
+ case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
|
||||
+ return "ISNOTNULL";
|
||||
+ case SQLITE_INDEX_CONSTRAINT_ISNULL:
|
||||
+ return "ISNULL";
|
||||
+ case SQLITE_INDEX_CONSTRAINT_IS:
|
||||
+ return "IS";
|
||||
#endif
|
||||
default:
|
||||
return "unknown";
|
||||
diff --git a/lib/DBD/SQLite/VirtualTable/PerlData.pm b/lib/DBD/SQLite/VirtualTable/PerlData.pm
|
||||
index 8151fe1..697cd08 100644
|
||||
--- a/lib/DBD/SQLite/VirtualTable/PerlData.pm
|
||||
+++ b/lib/DBD/SQLite/VirtualTable/PerlData.pm
|
||||
@@ -6,6 +6,7 @@ use warnings;
|
||||
use base 'DBD::SQLite::VirtualTable';
|
||||
use DBD::SQLite;
|
||||
use constant SQLITE_3010000 => $DBD::SQLite::sqlite_version_number >= 3010000 ? 1 : 0;
|
||||
+use constant SQLITE_3021000 => $DBD::SQLite::sqlite_version_number >= 3021000 ? 1 : 0;
|
||||
|
||||
# private data for translating comparison operators from Sqlite to Perl
|
||||
my $TXT = 0;
|
||||
@@ -23,6 +24,13 @@ my %SQLOP2PERLOP = (
|
||||
'GLOB' => [ 'DBD::SQLite::strglob', 'DBD::SQLite::strglob' ],
|
||||
'REGEXP'=> [ '=~', '=~' ],
|
||||
) : ()),
|
||||
+ (SQLITE_3021000 ? (
|
||||
+ 'NE' => [ 'ne', '!=' ],
|
||||
+ 'ISNOT' => [ 'defined', 'defined' ],
|
||||
+ 'ISNOTNULL' => [ 'defined', 'defined' ],
|
||||
+ 'ISNULL' => [ '!defined', '!defined' ],
|
||||
+ 'IS' => [ '!defined', '!defined' ],
|
||||
+ ) : ()),
|
||||
);
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
@@ -101,7 +109,15 @@ sub BEST_INDEX {
|
||||
$optype = $self->{optypes}[$col];
|
||||
}
|
||||
my $op = $SQLOP2PERLOP{$constraint->{op}}[$optype];
|
||||
- if (SQLITE_3010000 && $op =~ /str/) {
|
||||
+ if (SQLITE_3021000 && $op =~ /defined/) {
|
||||
+ if ($constraint->{op} =~ /NULL/) {
|
||||
+ push @conditions,
|
||||
+ "($op($member))";
|
||||
+ } else {
|
||||
+ push @conditions,
|
||||
+ "($op($member) && $op(\$vals[$ix]))";
|
||||
+ }
|
||||
+ } elsif (SQLITE_3010000 && $op =~ /str/) {
|
||||
push @conditions,
|
||||
"(defined($member) && defined(\$vals[$ix]) && !$op(\$vals[$ix], $member))";
|
||||
} else {
|
||||
--
|
||||
2.14.3
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: perl-DBD-SQLite
|
||||
Version: 1.54
|
||||
Release: 5%{?dist}
|
||||
Release: 6%{?dist}
|
||||
Summary: SQLite DBI Driver
|
||||
Group: Development/Libraries
|
||||
License: (GPL+ or Artistic) and Public Domain
|
||||
@ -9,6 +9,8 @@ Source0: http://search.cpan.org/CPAN/authors/id/I/IS/ISHIGAKI/DBD-SQLite-
|
||||
Patch0: perl-DBD-SQLite-bz543982.patch
|
||||
# Remove notes about bundled sqlite C source from man page and README
|
||||
Patch1: DBD-SQLite-1.50-Remove-bundled-source-extentions.patch
|
||||
# Add new index constraint ops introduced in SQLite 3.21.0 to PerlData
|
||||
Patch2: DBD-SQLite-1.54-added-new-index-constraint-ops-introduced-in-SQLite-.patch
|
||||
# if sqlite >= 3.1.3 then
|
||||
# perl-DBD-SQLite uses the external library
|
||||
# else
|
||||
@ -26,7 +28,7 @@ BuildRequires: perl(constant)
|
||||
# Prevent bug #443495
|
||||
BuildRequires: perl(DBI) >= 1.607
|
||||
BuildRequires: perl(DynaLoader)
|
||||
BuildRequires: perl(ExtUtils::MakeMaker)
|
||||
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
|
||||
BuildRequires: perl(File::Spec) >= 0.82
|
||||
BuildRequires: perl(Scalar::Util)
|
||||
BuildRequires: perl(strict)
|
||||
@ -63,19 +65,19 @@ libraries.
|
||||
%setup -q -n DBD-SQLite-%{version}
|
||||
%patch0 -p1 -b .bz543982
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
# Remove bundled sqlite libraries (BZ#1059154)
|
||||
# System libraries will be used
|
||||
rm sqlite*
|
||||
sed -i -e '/^sqlite/ d' MANIFEST
|
||||
|
||||
%build
|
||||
CFLAGS="%{optflags}" perl Makefile.PL INSTALLDIRS=vendor
|
||||
CFLAGS="%{optflags}" perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1
|
||||
make %{?_smp_mflags} OPTIMIZE="%{optflags}"
|
||||
|
||||
%install
|
||||
make pure_install DESTDIR=%{buildroot}
|
||||
find %{buildroot} -type f \( -name .packlist -o \
|
||||
-name '*.bs' -size 0 \) -delete
|
||||
find %{buildroot} -type f -name '*.bs' -size 0 -delete
|
||||
%{_fixperms} %{buildroot}/*
|
||||
|
||||
%check
|
||||
@ -88,6 +90,10 @@ make test
|
||||
%{_mandir}/man3/*.3pm*
|
||||
|
||||
%changelog
|
||||
* Thu Feb 08 2018 Jitka Plesnikova <jplesnik@redhat.com> - 1.54-6
|
||||
- Adjust to sqlite-3.22.0 (bug #1543286)
|
||||
- Add new index constraint ops introduced in SQLite 3.21.0 to PerlData
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.54-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user