diff --git a/DBD-SQLite-1.54-added-new-index-constraint-ops-introduced-in-SQLite-.patch b/DBD-SQLite-1.54-added-new-index-constraint-ops-introduced-in-SQLite-.patch new file mode 100644 index 0000000..c6a6125 --- /dev/null +++ b/DBD-SQLite-1.54-added-new-index-constraint-ops-introduced-in-SQLite-.patch @@ -0,0 +1,80 @@ +From da3306e443661f3a291367166ae3e2080acd5c45 Mon Sep 17 00:00:00 2001 +From: Kenichi Ishigaki +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 + diff --git a/perl-DBD-SQLite.spec b/perl-DBD-SQLite.spec index d1e07b7..90ad423 100644 --- a/perl-DBD-SQLite.spec +++ b/perl-DBD-SQLite.spec @@ -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 - 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 - 1.54-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild