diff options
author | Erlend Egeberg Aasland <erlend.aasland@innova.no> | 2021-03-04 09:50:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-04 09:50:25 (GMT) |
commit | e161ec5dd7ba9355eb06757b9304019ac53cdf69 (patch) | |
tree | 424f0e45c595f358569763e3cfd67004bc6d9185 /Lib/sqlite3 | |
parent | c61ec7e6b892313cd3ecbaf02227bacb9d5ddaa2 (diff) | |
download | cpython-e161ec5dd7ba9355eb06757b9304019ac53cdf69.zip cpython-e161ec5dd7ba9355eb06757b9304019ac53cdf69.tar.gz cpython-e161ec5dd7ba9355eb06757b9304019ac53cdf69.tar.bz2 |
bpo-43369: sqlite3_column_{text,blob} failures now raise MemoryError (GH-24723)
Diffstat (limited to 'Lib/sqlite3')
-rw-r--r-- | Lib/sqlite3/test/types.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/Lib/sqlite3/test/types.py b/Lib/sqlite3/test/types.py index 92ec634..2370dd1 100644 --- a/Lib/sqlite3/test/types.py +++ b/Lib/sqlite3/test/types.py @@ -110,7 +110,20 @@ class DeclTypesTests(unittest.TestCase): def setUp(self): self.con = sqlite.connect(":memory:", detect_types=sqlite.PARSE_DECLTYPES) self.cur = self.con.cursor() - self.cur.execute("create table test(i int, s str, f float, b bool, u unicode, foo foo, bin blob, n1 number, n2 number(5), bad bad)") + self.cur.execute(""" + create table test( + i int, + s str, + f float, + b bool, + u unicode, + foo foo, + bin blob, + n1 number, + n2 number(5), + bad bad, + cbin cblob) + """) # override float, make them always return the same number sqlite.converters["FLOAT"] = lambda x: 47.2 @@ -121,6 +134,7 @@ class DeclTypesTests(unittest.TestCase): sqlite.converters["BAD"] = DeclTypesTests.BadConform sqlite.converters["WRONG"] = lambda x: "WRONG" sqlite.converters["NUMBER"] = float + sqlite.converters["CBLOB"] = lambda x: b"blobish" def tearDown(self): del sqlite.converters["FLOAT"] @@ -129,6 +143,7 @@ class DeclTypesTests(unittest.TestCase): del sqlite.converters["BAD"] del sqlite.converters["WRONG"] del sqlite.converters["NUMBER"] + del sqlite.converters["CBLOB"] self.cur.close() self.con.close() @@ -237,6 +252,12 @@ class DeclTypesTests(unittest.TestCase): # if the converter is not used, it's an int instead of a float self.assertEqual(type(value), float) + def test_convert_zero_sized_blob(self): + self.con.execute("insert into test(cbin) values (?)", (b"",)) + cur = self.con.execute("select cbin from test") + self.assertEqual(cur.fetchone()[0], b"blobish") + + class ColNamesTests(unittest.TestCase): def setUp(self): self.con = sqlite.connect(":memory:", detect_types=sqlite.PARSE_COLNAMES) |