You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-lua/luadbi/files/luadbi-0.7.2-incompatible-p...

164 lines
4.6 KiB

From 7f9c10e753325e3cc00d4955bf9d6a77a896bdcb Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Thu, 5 Sep 2019 14:25:20 +0100
Subject: [PATCH 1/3] MySQL: Don't set (unused) field is_null to nonsense
value, fixes #56
---
dbd/mysql/statement.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/dbd/mysql/statement.c b/dbd/mysql/statement.c
index aca865a..dd01c1e 100644
--- a/dbd/mysql/statement.c
+++ b/dbd/mysql/statement.c
@@ -218,7 +218,6 @@ static int statement_execute(lua_State *L) {
switch(type) {
case LUA_TNIL:
bind[i].buffer_type = MYSQL_TYPE_NULL;
- bind[i].is_null = (int*)1;
break;
case LUA_TBOOLEAN:
From 83954fe0ba8c83fbe9351937e0d30b9c842dadb1 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Thu, 5 Sep 2019 14:26:04 +0100
Subject: [PATCH 2/3] Add test for handling of NULL values
---
tests/run_tests.lua | 48 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/tests/run_tests.lua b/tests/run_tests.lua
index 0dd9f72..80526b6 100755
--- a/tests/run_tests.lua
+++ b/tests/run_tests.lua
@@ -301,6 +301,51 @@ local function test_insert_multi()
end
+local function test_insert_null()
+
+ local sth, sth2, err, success
+ local stringy = os.date()
+
+
+ sth, err = dbh:prepare(code('insert'))
+
+ assert.is_nil(err)
+ assert.is_not_nil(sth)
+
+ success, err = sth:execute(nil)
+
+ assert.is_true(success)
+ assert.is_nil(err)
+
+ assert.is_equal(1, sth:affected())
+
+ --
+ -- Grab it back, make sure it's all good
+ --
+
+ local id = dbh:last_id()
+ assert.is_not_nil(id)
+ sth:close()
+
+ sth2, err = dbh:prepare(code('insert_select'))
+
+ assert.is_nil(err)
+ assert.is_not_nil(sth)
+
+ success, err = sth2:execute(id)
+
+ assert.is_true(success)
+ assert.is_nil(err)
+
+ local row = sth2:rows(false)()
+ assert.is_not_nil(row)
+ assert.are_equal(id, row[1])
+ assert.is_nil(row[2])
+
+ sth:close()
+ sth2:close()
+
+end
local function test_insert_returning()
@@ -494,6 +539,7 @@ describe("PostgreSQL #psql", function()
it( "Tests a simple select", test_select )
it( "Tests multi-row selects", test_select_multi )
it( "Tests inserts", test_insert_returning )
+ it( "Tests inserts of NULL", test_insert_null )
it( "Tests statement reuse", test_insert_multi )
it( "Tests no insert_id", test_no_insert_id )
it( "Tests affected rows", test_update )
@@ -514,6 +560,7 @@ describe("SQLite3 #sqlite3", function()
it( "Tests simple selects", test_select )
it( "Tests multi-row selects", test_select_multi )
it( "Tests inserts", test_insert )
+ it( "Tests inserts of NULL", test_insert_null )
it( "Tests statement reuse", test_insert_multi )
it( "Tests no rowcount", test_no_rowcount )
it( "Tests affected rows", test_update )
@@ -534,6 +581,7 @@ describe("MySQL #mysql", function()
it( "Tests simple selects", test_select )
it( "Tests multi-row selects", test_select_multi )
it( "Tests inserts", test_insert )
+ it( "Tests inserts of NULL", test_insert_null )
it( "Tests statement reuse", test_insert_multi )
it( "Tests affected rows", test_update )
it( "Tests closing dbh doesn't segfault", test_db_close_doesnt_segfault )
From 4555eb0a63945e829ffba635cac87b9e22155ffc Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Thu, 5 Sep 2019 14:35:52 +0100
Subject: [PATCH 3/3] tests/schemas: allow null inserts for testing
---
tests/schemas/mysql.sql | 2 +-
tests/schemas/postgresql.sql | 2 +-
tests/schemas/sqlite3.sql | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/schemas/mysql.sql b/tests/schemas/mysql.sql
index 1134e64..2948075 100644
--- a/tests/schemas/mysql.sql
+++ b/tests/schemas/mysql.sql
@@ -46,7 +46,7 @@ drop table if exists insert_tests;
create table insert_tests
(
id int not null primary key auto_increment,
- val varchar(255) not null
+ val varchar(255)
);
grant insert, select on insert_tests to 'luadbi'@'%';
diff --git a/tests/schemas/postgresql.sql b/tests/schemas/postgresql.sql
index f430516..efe23f3 100644
--- a/tests/schemas/postgresql.sql
+++ b/tests/schemas/postgresql.sql
@@ -47,7 +47,7 @@ drop table if exists insert_tests cascade;
create table insert_tests
(
id serial primary key,
- val varchar(255) not null
+ val varchar(255)
);
grant insert, select on insert_tests to luadbi;
diff --git a/tests/schemas/sqlite3.sql b/tests/schemas/sqlite3.sql
index d3ba4bc..3bf0eb0 100644
--- a/tests/schemas/sqlite3.sql
+++ b/tests/schemas/sqlite3.sql
@@ -44,7 +44,7 @@ drop table if exists insert_tests;
create table insert_tests
(
id integer primary key,
- val varchar(255) not null
+ val varchar(255)
);
drop table if exists update_tests;