summaryrefslogtreecommitdiffstats
path: root/Lib/sqlite3
diff options
context:
space:
mode:
authorErlend Egeberg Aasland <erlend.aasland@innova.no>2021-03-04 09:50:25 (GMT)
committerGitHub <noreply@github.com>2021-03-04 09:50:25 (GMT)
commite161ec5dd7ba9355eb06757b9304019ac53cdf69 (patch)
tree424f0e45c595f358569763e3cfd67004bc6d9185 /Lib/sqlite3
parentc61ec7e6b892313cd3ecbaf02227bacb9d5ddaa2 (diff)
downloadcpython-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.py23
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)