From e293172c27cabf5e4a9c36c4ed9535b019ba202480084f53a99fe086a2a34d65 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Wed, 29 Jan 2020 13:28:00 +0000 Subject: [PATCH] Accepting request 768317 from home:StefanBruens:branches:server:database - Fix a regression on ppc64be and s390x, found by the fuzzing tests, add 04885763c4cd00cb-s390-compatibility.patch. - Adapt some FTS tests to work on big endian archs: b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch OBS-URL: https://build.opensuse.org/request/show/768317 OBS-URL: https://build.opensuse.org/package/show/server:database/sqlite3?expand=0&rev=241 --- 04885763c4cd00cb-s390-compatibility.patch | 25 +++++++ ...6595a-adapt-FTS-tests-for-big-endian.patch | 65 +++++++++++++++++++ sqlite3.changes | 8 +++ sqlite3.spec | 8 ++- 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 04885763c4cd00cb-s390-compatibility.patch create mode 100644 b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch diff --git a/04885763c4cd00cb-s390-compatibility.patch b/04885763c4cd00cb-s390-compatibility.patch new file mode 100644 index 0000000..686004f --- /dev/null +++ b/04885763c4cd00cb-s390-compatibility.patch @@ -0,0 +1,25 @@ +Index: src/insert.c +================================================================== +--- src/insert.c ++++ src/insert.c +@@ -2168,16 +2168,18 @@ + ** Hence, make a complete copy of the opcode, rather than using + ** a pointer to the opcode. */ + x = *sqlite3VdbeGetOp(v, addrConflictCk); + if( x.opcode!=OP_IdxRowid ){ + int p2; /* New P2 value for copied conflict check opcode */ ++ const char *zP4; + if( sqlite3OpcodeProperty[x.opcode]&OPFLG_JUMP ){ + p2 = lblRecheckOk; + }else{ + p2 = x.p2; + } +- sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, x.p4.z, x.p4type); ++ zP4 = x.p4type==P4_INT32 ? SQLITE_INT_TO_PTR(x.p4.i) : x.p4.z; ++ sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, zP4, x.p4type); + sqlite3VdbeChangeP5(v, x.p5); + VdbeCoverageIf(v, p2!=x.p2); + } + nConflictCk--; + addrConflictCk++; + diff --git a/b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch b/b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch new file mode 100644 index 0000000..6fe79be --- /dev/null +++ b/b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch @@ -0,0 +1,65 @@ +Index: ext/fts5/test/fts5matchinfo.test +================================================================== +--- ext/fts5/test/fts5matchinfo.test ++++ ext/fts5/test/fts5matchinfo.test +@@ -498,23 +498,26 @@ + CREATE VIRTUAL TABLE t1 USING fts5(x, y); + INSERT INTO t1 VALUES('a', 'b'); + INSERT INTO t1 VALUES('c', 'd'); + } + ++if {$tcl_platform(byteOrder)=="littleEndian"} { ++ set res {X'02000000'} ++} else { ++ set res {X'00000002'} ++} + do_execsql_test 15.1 { + SELECT quote(matchinfo(t1, 'n')) FROM t1 LIMIT 1; +-} {X'02000000'} +- ++} $res + do_execsql_test 15.2 { + DELETE FROM t1_content WHERE rowid=1; + SELECT quote(matchinfo(t1, 'n')) FROM t1 LIMIT 1; +-} {X'02000000'} ++} $res + + fts5_aux_test_functions db + do_execsql_test 15.3 { + SELECT fts5_test_all(t1) FROM t1 LIMIT 1; + } { + {columnsize {0 0} columntext {c d} columntotalsize {2 2} poslist {} tokenize {c d} rowcount 2} + } + + finish_test +- + +Index: test/fts4aa.test +================================================================== +--- test/fts4aa.test ++++ test/fts4aa.test +@@ -227,17 +227,22 @@ + } {1 {database disk image is malformed}} + + # 2019-11-18 https://bugs.chromium.org/p/chromium/issues/detail?id=1025467 + db close + sqlite3 db :memory: ++if {$tcl_platform(byteOrder)=="littleEndian"} { ++ set res {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'} ++} else { ++ set res {X'0000000200000000000000000000000E0000000E00000001000000010000000100000001'} ++} + do_execsql_test fts4aa-6.10 { + CREATE VIRTUAL TABLE f USING fts4(); + INSERT INTO f_segdir VALUES (77,91,0,0,'255 77',x'0001308000004d5c4ddddddd4d4d7b4d4d4d614d8019ff4d05000001204d4d2e4d6e4d4d4d4b4d6c4d004d4d4d4d4d4d3d000000004d5d4d4d645d4d004d4d4d4d4d4d4d4d4d454d6910004d05ffff054d646c4d004d5d4d4d4d4d3d000000004d4d4d4d4d4d4d4d4d4d4d69624d4d4d04004d4d4d4d4d604d4ce1404d554d45'); + INSERT INTO f_segdir VALUES (77,108,0,0,'255 77',x'0001310000fa64004d4d4d3c5d4d654d4d4d614d8000ff4d05000001204d4d2e4d6e4d4d4dff4d4d4d4d4d4d00104d4d4d4d000000004d4d4d0400311d4d4d4d4d4d4d4d4d4d684d6910004d05ffff054d4d6c4d004d4d4d4d4d4d3d000000004d4d4d4d644d4d4d4d4d4d69624d4d4d03ed4d4d4d4d4d604d4ce1404d550080'); + INSERT INTO f_stat VALUES (0,x'80808080100000000064004d4d4d3c4d4d654d4d4d614d8000ff4df6ff1a00204d4d2e4d6e4d4d4d104d4d4d4d4d4d00104d4d4d4d4d4d69574d4d4d000031044d4d4d3e4d4d4c4d05004d6910'); + SELECT quote(matchinfo(f,'pnax')) from f where f match '0 1'; +-} {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'} ++} $res + + # 2019-11-18 Detect infinite loop in fts3SelectLeaf() + db close + sqlite3 db :memory: + do_catchsql_test fts4aa-7.10 { + diff --git a/sqlite3.changes b/sqlite3.changes index 6b25022..c6a340c 100644 --- a/sqlite3.changes +++ b/sqlite3.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed Jan 29 12:59:23 UTC 2020 - Stefan BrĂ¼ns + +- Fix a regression on ppc64be and s390x, found by the fuzzing + tests, add 04885763c4cd00cb-s390-compatibility.patch. +- Adapt some FTS tests to work on big endian archs: + b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch + ------------------------------------------------------------------- Mon Jan 27 21:53:02 UTC 2020 - Andreas Stieger diff --git a/sqlite3.spec b/sqlite3.spec index 6b6619f..80f33d1 100644 --- a/sqlite3.spec +++ b/sqlite3.spec @@ -1,7 +1,7 @@ # # spec file for package sqlite3 # -# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,6 +29,10 @@ URL: http://www.sqlite.org/ Source0: http://www.sqlite.org/2020/sqlite-src-%{tarversion}.zip Source1: baselibs.conf Source2: http://www.sqlite.org/2020/sqlite-doc-%{tarversion}.zip +# PATCH-FIX-UPSTREAM -- Fix errors on s390 +Patch0: 04885763c4cd00cb-s390-compatibility.patch +# PATCH-FIX-UPSTREAM -- Fix FTS test failures on big endian archs +Patch1: b20503aaf5b6595a-adapt-FTS-tests-for-big-endian.patch BuildRequires: automake %if %{with icu} BuildRequires: libicu-devel @@ -107,6 +111,8 @@ other documentation found on sqlite.org. The files can be found in %prep %setup -q -n sqlite-src-%{tarversion} -a2 +%patch0 -p0 +%patch1 -p0 rm -v sqlite-doc-%{tarversion}/releaselog/current.html ln -sv `echo %{version} | sed "s/\./_/g"`.html sqlite-doc-%{tarversion}/releaselog/current.html