summaryrefslogtreecommitdiff
path: root/dev-lua/luadbi/files/luadbi-0.7.2-incompatible-pointer-type.patch
blob: dfe3db4b030dde3b690761bf7204b8a1d07e7e8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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;