From c52e6e68705753fe90c4a1f32fcfdf79f746e6a4 Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Tue, 30 Nov 2021 21:46:38 +0000 Subject: [PATCH] Bump SQLite to 3.37.0 (#6530) Context: https://sqlite.org/releaselog/3_37_0.html Context: https://github.com/sqlite/sqlite/commit/c2df4d6adb44e5f9587bf962c917c46c603825c9 Context: https://github.com/sqlite/sqlite/compare/version-3.36.0...version-3.37.0 % git diff --shortstat version-3.36.0...version-3.37.0 253 files changed, 13372 insertions(+), 4534 deletions(-) Changes: https://github.com/xamarin/sqlite/compare/a5757617946e02dfb2a5595633fe4de4f99ff616...88e12a9e62714b4dbdf0faeea01b8c2a28fd31fd % git diff --shortstat a5757617...88e12a9e 13 files changed, 62515 insertions(+), 39564 deletions(-) An apparent undocumented "breaking change" that we encountered: probably as of sqlite/sqlite@c2df4d6a, if a column type is one of a known set of types, then the type is stored in the bit-field, not as a string. For example, given: CREATE TABLE TESTTABLE (DATA blob not null) if you query the type of the `DATA` column, SQLite will now return `BLOB`, whereas previously it would return `blob`; the case is no longer preserved. This broke one of our unit tests, which was fixed by using a case-insensitive comparison. --- external/sqlite | 2 +- tests/Mono.Android-Tests/Mono.Data.Sqlite/SqliteTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/external/sqlite b/external/sqlite index a5757617946..88e12a9e627 160000 --- a/external/sqlite +++ b/external/sqlite @@ -1 +1 @@ -Subproject commit a5757617946e02dfb2a5595633fe4de4f99ff616 +Subproject commit 88e12a9e62714b4dbdf0faeea01b8c2a28fd31fd diff --git a/tests/Mono.Android-Tests/Mono.Data.Sqlite/SqliteTests.cs b/tests/Mono.Android-Tests/Mono.Data.Sqlite/SqliteTests.cs index 035cc2729ef..321df6122cb 100644 --- a/tests/Mono.Android-Tests/Mono.Data.Sqlite/SqliteTests.cs +++ b/tests/Mono.Android-Tests/Mono.Data.Sqlite/SqliteTests.cs @@ -126,7 +126,7 @@ public void BasicFunctionality () c.CommandText = "SELECT * FROM TESTTABLE"; using (var r = c.ExecuteReader ()) { string typeName = r.GetDataTypeName (0); - Assert.IsFalse (typeName != "blob", $"Bug in DbDataReader.GetDataTypeName: should be 'blob', got: {typeName}"); + Assert.IsTrue (String.Compare (typeName, "BLOB", StringComparison.OrdinalIgnoreCase) == 0, $"Bug in DbDataReader.GetDataTypeName: should be 'blob', got: {typeName}"); } }); ItemsDb.Instance.WithCommand (c => {