Upgrade SQLite to 3.46 (#10911)

Before 3.46, the SQLite parser had a limited stack, which could overflow for certain complex queries.

CTE optimizations make some of our queries much smaller, but also a little bit more deeply nested, causing the parser stack to overflow. 3.46 removes this stack limitation.

Closes #10910.

(cherry picked from commit 6f97e8041b)
This commit is contained in:
GregoryTravis 2024-09-07 13:58:59 -04:00 committed by James Dunkerley
parent f2ea866da6
commit db749895b8
19 changed files with 65 additions and 20 deletions

View File

@ -108,6 +108,7 @@
`Comparable.new`][10468]
- [Added `dec` construction function for creating `Decimal`s.][10517]
- [Added initial read support for SQLServer][10324]
- [Upgraded SQLite to version 3.46.1.][10911]
[10434]: https://github.com/enso-org/enso/pull/10434
[10445]: https://github.com/enso-org/enso/pull/10445
@ -116,6 +117,7 @@
[10474]: https://github.com/enso-org/enso/pull/10474
[10517]: https://github.com/enso-org/enso/pull/10517
[10324]: https://github.com/enso-org/enso/pull/10324
[10911]: https://github.com/enso-org/enso/pull/10911
# Enso 2024.2

View File

@ -559,7 +559,7 @@ val scalaLoggingVersion = "3.9.4"
val scalameterVersion = "0.19"
val scalatestVersion = "3.3.0-SNAP4"
val slf4jVersion = JPMSUtils.slf4jVersion
val sqliteVersion = "3.42.0.0"
val sqliteVersion = "3.46.1.0"
val tikaVersion = "2.4.1"
val typesafeConfigVersion = "1.4.2"
val junitVersion = "4.13.2"

View File

@ -11,7 +11,12 @@ The license information can be found along with the copyright notices.
Copyright notices related to this dependency can be found in the directory `org.postgresql.postgresql-42.4.0`.
'slf4j-api', licensed under the MIT License, is distributed with the Database.
The license file can be found at `licenses/MIT`.
Copyright notices related to this dependency can be found in the directory `org.slf4j.slf4j-api-1.7.36`.
'sqlite-jdbc', licensed under the The Apache Software License, Version 2.0, is distributed with the Database.
The license information can be found along with the copyright notices.
Copyright notices related to this dependency can be found in the directory `org.xerial.sqlite-jdbc-3.42.0.0`.
Copyright notices related to this dependency can be found in the directory `org.xerial.sqlite-jdbc-3.46.1.0`.

View File

@ -0,0 +1,6 @@
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,27 @@
/**
* Copyright (c) 2004-2011 QOS.ch
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/

View File

@ -37,9 +37,9 @@ sources to gather copyright information related to the used dependencies.
To configure the task, `GatherLicenses.distributions` should be set with
sequence of distributions. Each distribution describes one component that is
distributed separately and should include all references to all projects that
are included as part of its distribution. Currently, we have the `launcher`
distribution that consists of one `launcher` component and the `engine`
distribution which includes `runtime`, `engine-runner` and `project-manager`.
are included as part of its distribution. Currently we have three main
distrbutions (`launcher`, `engine`, and `project-manager`), as well as
distributions for many of the major components of the standard library.
Another relevant setting is `GatherLicenses.licenseConfigurations` which defines
which `ivy` configurations are considered to search for dependencies. Currently

View File

@ -20,13 +20,15 @@ type Batch_Runner
values_vec = configs.map c-> c.at 0
dps_vec = configs.map c-> c.at 1
expected_vec = configs.map c-> c.at 2
epsilon_vec = configs.map c-> c.at 3
got_vec = self.run_batch values_vec dps_vec use_bankers
got_vec.each_with_index ix-> got->
expected = expected_vec.at ix
value = values_vec.at ix
dp = dps_vec.at ix
epsilon = epsilon_vec.at ix
Test.with_clue "round("+value.to_text+", "+dp.to_text+", use_bankers="+use_bankers.to_text+") -> " <|
got.should_equal expected
got.should_equal expected epsilon
type Batch_Builder
Value vector_builder
@ -37,8 +39,8 @@ type Batch_Builder
type Check_Instance
Value vector_builder value dp
should_equal self (expected : Number) =
self.vector_builder.append [self.value, self.dp, expected]
should_equal self (expected : Number) (epsilon:Float=0) =
self.vector_builder.append [self.value, self.dp, expected, epsilon]
## PRIVATE
add_specs group_builder batch_runner run_advanced =
@ -180,25 +182,25 @@ add_specs group_builder batch_runner run_advanced =
round_fun 1.222222222225 11 . should_equal 1.22222222223
round_fun 1.2222222222225 12 . should_equal 1.222222222223
round_fun 1.22222222222225 13 . should_equal 1.2222222222223
round_fun 1.222222222222225 14 . should_equal 1.22222222222223
round_fun 1.222222222222225 14 . should_equal 1.22222222222223 0.00000000000001
round_fun -1.22222222225 10 . should_equal -1.2222222223
round_fun -1.222222222225 11 . should_equal -1.22222222223
round_fun -1.2222222222225 12 . should_equal -1.222222222223
round_fun -1.22222222222225 13 . should_equal -1.2222222222223
round_fun -1.222222222222225 14 . should_equal -1.22222222222223
round_fun -1.222222222222225 14 . should_equal -1.22222222222223 0.00000000000001
round_fun 1.22222222235 10 . should_equal 1.2222222224
round_fun 1.222222222235 11 . should_equal 1.22222222224
round_fun 1.2222222222235 12 . should_equal 1.222222222224
round_fun 1.22222222222235 13 . should_equal 1.2222222222224
round_fun 1.222222222222235 14 . should_equal 1.22222222222224
round_fun 1.2222222222235 12 . should_equal 1.222222222224 0.000000000002
round_fun 1.22222222222235 13 . should_equal 1.2222222222224 0.0000000000001
round_fun 1.222222222222235 14 . should_equal 1.22222222222224 0.00000000000001
round_fun -1.22222222235 10 . should_equal -1.2222222224
round_fun -1.222222222235 11 . should_equal -1.22222222224
round_fun -1.2222222222235 12 . should_equal -1.222222222224
round_fun -1.22222222222235 13 . should_equal -1.2222222222224
round_fun -1.222222222222235 14 . should_equal -1.22222222222224
round_fun -1.2222222222235 12 . should_equal -1.222222222224 0.000000000002
round_fun -1.22222222222235 13 . should_equal -1.2222222222224 0.0000000000001
round_fun -1.222222222222235 14 . should_equal -1.22222222222224 0.00000000000001
group_builder.specify "Can round correctly near the precision limit, using banker's rounding" pending=pending_advanced <|
batch_runner.run use_bankers=True round_fun->
@ -228,7 +230,7 @@ add_specs group_builder batch_runner run_advanced =
group_builder.specify "Floating point imperfect representation counter-examples" pending=(if group_builder.name.contains "Snowflake" then "TODO: https://github.com/enso-org/enso/issues/10307") <|
batch_runner.run_one 1.225 2 use_bankers=True . should_equal 1.22 # Actual result 1.23
batch_runner.run_one 37.785 2 . should_equal 37.79
batch_runner.run_one 37.785 2 . should_equal 37.79 0.01
group_builder.specify "Can round small integers to a specified number of decimal places correctly (value is unchanged)" <|
batch_runner.run use_bankers=False round_fun->

View File

@ -86,7 +86,7 @@ add_specs (suite_builder : Suite_Builder) setup (prefix : Text) default_connecti
big = wm b0 (x * y) xty->
wm b1 (x + y + 10) xpyp10->
wm b2 (xty.round 1 use_bankers=True) r0->
wm b3 xpyp10.round r1->
wm b3 (xpyp10.round use_bankers=True) r1->
r0 + r1
big.to_vector
results.flatten.flatten.flatten.distinct.length . should_equal 1

View File

@ -0,0 +1 @@
Copyright (c) 2004-2011 QOS.ch

View File

@ -1,3 +1,3 @@
4DFA19B7C7AB8984E827C35E9CA6EF40CC3B246094BB0A763D65AD6BF76F0D26
DF30306CEDC69A2DB5BF394CDD77B240B6F6B2E695D4DE6BDC343EAA271CEB34
DD7BB70C12F39CA1BC8F595222CF0561FAF0BE8FC966DB1CB006E087A6620383
2BEE2E3E56AF2CFCD76BAEDCAC4ECEA5D6D2CAD1E9727A38052FC5385E818DBD
0

View File

@ -0,0 +1 @@
tools/legal-review/license-texts/MIT