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.
164 lines
4.6 KiB
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;
|