@@ -368,7 +368,7 @@ public function testCreateTable() {
368
368
'Type ' => 'bigint(20) unsigned ' ,
369
369
'Null ' => 'NO ' ,
370
370
'Key ' => 'PRI ' ,
371
- 'Default ' => null ,
371
+ 'Default ' => ' 0 ' ,
372
372
'Extra ' => '' ,
373
373
),
374
374
(object ) array (
@@ -1085,7 +1085,7 @@ public function testNestedTransactionWorkComplexModify() {
1085
1085
'Type ' => 'integer ' ,
1086
1086
'Null ' => 'NO ' ,
1087
1087
'Key ' => 'PRI ' ,
1088
- 'Default ' => null ,
1088
+ 'Default ' => ' 0 ' ,
1089
1089
'Extra ' => '' ,
1090
1090
),
1091
1091
(object ) array (
@@ -1946,29 +1946,30 @@ public function testOnConflictReplace()
1946
1946
name varchar(20) NOT NULL default 'default-value',
1947
1947
unique_name varchar(20) NOT NULL default 'unique-default-value',
1948
1948
inline_unique_name varchar(20) NOT NULL default 'inline-unique-default-value',
1949
+ no_default varchar(20) NOT NULL,
1949
1950
UNIQUE KEY unique_name (unique_name)
1950
1951
); "
1951
1952
);
1952
1953
1953
1954
$ this ->assertQuery (
1954
- "INSERT INTO _tmp_table (ID, name, unique_name, inline_unique_name) VALUES (1, null, null, null); "
1955
+ "INSERT INTO _tmp_table VALUES (1, null, null, null, '' ); "
1955
1956
);
1956
- $ result = $ this ->assertQuery ("SELECT name, unique_name, inline_unique_name FROM _tmp_table " );
1957
-
1958
- $ result = $ this ->assertQuery ("SELECT name, unique_name, inline_unique_name FROM _tmp_table " );
1957
+ $ result = $ this ->assertQuery ("SELECT * FROM _tmp_table WHERE ID = 1 " );
1959
1958
$ this ->assertEquals (
1960
1959
array (
1961
1960
(object ) array (
1961
+ 'ID ' => '1 ' ,
1962
1962
'name ' => 'default-value ' ,
1963
1963
'unique_name ' => 'unique-default-value ' ,
1964
1964
'inline_unique_name ' => 'inline-unique-default-value ' ,
1965
+ 'no_default ' => '' ,
1965
1966
),
1966
1967
),
1967
1968
$ result
1968
1969
);
1969
1970
1970
1971
$ this ->assertQuery (
1971
- "INSERT INTO _tmp_table (ID, name, unique_name, inline_unique_name) VALUES (2, '1', '2', '3'); "
1972
+ "INSERT INTO _tmp_table VALUES (2, '1', '2', '3', '4 '); "
1972
1973
);
1973
1974
$ this ->assertQuery (
1974
1975
"UPDATE _tmp_table SET name = null WHERE ID = 2; "
@@ -1995,5 +1996,60 @@ public function testOnConflictReplace()
1995
1996
"UPDATE _tmp_table SET inline_unique_name = NULL WHERE ID = 2; " ,
1996
1997
''
1997
1998
);
1999
+
2000
+ // WPDB allows for NULL values in columns that don't have a default value and a NOT NULL constraint
2001
+ $ this ->assertQuery (
2002
+ "UPDATE _tmp_table SET no_default = NULL WHERE ID = 2; " ,
2003
+ ''
2004
+ );
2005
+
2006
+ $ result = $ this ->assertQuery ("SELECT * FROM _tmp_table WHERE ID = 2 " );
2007
+ $ this ->assertEquals (
2008
+ array (
2009
+ (object ) array (
2010
+ 'ID ' => '2 ' ,
2011
+ 'name ' => 'default-value ' ,
2012
+ 'unique_name ' => '2 ' ,
2013
+ 'inline_unique_name ' => 'inline-unique-default-value ' ,
2014
+ 'no_default ' => '' ,
2015
+ ),
2016
+ ),
2017
+ $ result
2018
+ );
2019
+ }
2020
+
2021
+ public function testDefaultNullValue ()
2022
+ {
2023
+ $ this ->assertQuery (
2024
+ "CREATE TABLE _tmp_table (
2025
+ name varchar(20) NOT NULL default NULL,
2026
+ no_default varchar(20) NOT NULL
2027
+ ); "
2028
+ );
2029
+
2030
+ $ result = $ this ->assertQuery (
2031
+ "DESCRIBE _tmp_table; "
2032
+ );
2033
+ $ this ->assertEquals (
2034
+ array (
2035
+ (object ) array (
2036
+ 'Field ' => 'name ' ,
2037
+ 'Type ' => 'varchar(20) ' ,
2038
+ 'Null ' => 'NO ' ,
2039
+ 'Key ' => '' ,
2040
+ 'Default ' => 'NULL ' ,
2041
+ 'Extra ' => '' ,
2042
+ ),
2043
+ (object ) array (
2044
+ 'Field ' => 'no_default ' ,
2045
+ 'Type ' => 'varchar(20) ' ,
2046
+ 'Null ' => 'NO ' ,
2047
+ 'Key ' => '' ,
2048
+ 'Default ' => null ,
2049
+ 'Extra ' => '' ,
2050
+ ),
2051
+ ),
2052
+ $ result
2053
+ );
1998
2054
}
1999
2055
}
0 commit comments