Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
d08216f1
Commit
d08216f1
authored
Apr 06, 2007
by
holyfoot/hf@hfmain.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/d2/hf/mrg/mysql-5.0-opt
into mysql.com:/d2/hf/mrg/mysql-5.1-opt
parents
96d012bc
204559cd
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
214 additions
and
9 deletions
+214
-9
mysql-test/r/errors.result
mysql-test/r/errors.result
+13
-0
mysql-test/r/order_by.result
mysql-test/r/order_by.result
+84
-0
mysql-test/r/type_set.result
mysql-test/r/type_set.result
+19
-0
mysql-test/t/errors.test
mysql-test/t/errors.test
+12
-0
mysql-test/t/order_by.test
mysql-test/t/order_by.test
+35
-1
mysql-test/t/type_set.test
mysql-test/t/type_set.test
+17
-0
sql/field.cc
sql/field.cc
+0
-5
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+20
-0
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+1
-0
sql/sql_table.cc
sql/sql_table.cc
+13
-3
No files found.
mysql-test/r/errors.result
View file @
d08216f1
...
@@ -28,3 +28,16 @@ ERROR 42000: Display width out of range for column 'a' (max = 255)
...
@@ -28,3 +28,16 @@ ERROR 42000: Display width out of range for column 'a' (max = 255)
set sql_mode='traditional';
set sql_mode='traditional';
create table t1 (a varchar(66000));
create table t1 (a varchar(66000));
ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead
ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead
set sql_mode=default;
CREATE TABLE t1 (a INT);
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
a
INSERT INTO t1 VALUES(1);
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
a
1
INSERT INTO t1 VALUES(2),(3);
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
a
1
DROP TABLE t1;
mysql-test/r/order_by.result
View file @
d08216f1
...
@@ -906,6 +906,90 @@ ERROR 23000: Column 'val' in order clause is ambiguous
...
@@ -906,6 +906,90 @@ ERROR 23000: Column 'val' in order clause is ambiguous
SELECT p.a AS val, q.a AS val FROM t1 p, t1 q ORDER BY val > 1;
SELECT p.a AS val, q.a AS val FROM t1 p, t1 q ORDER BY val > 1;
ERROR 23000: Column 'val' in order clause is ambiguous
ERROR 23000: Column 'val' in order clause is ambiguous
DROP TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (3), (2), (4), (1);
SELECT a, IF(a IN (2,3), a, a+10) FROM t1
ORDER BY IF(a IN (2,3), a, a+10);
a IF(a IN (2,3), a, a+10)
2 2
3 3
1 11
4 14
SELECT a, IF(a NOT IN (2,3), a, a+10) FROM t1
ORDER BY IF(a NOT IN (2,3), a, a+10);
a IF(a NOT IN (2,3), a, a+10)
1 1
4 4
2 12
3 13
SELECT a, IF(a IN (2,3), a, a+10) FROM t1
ORDER BY IF(a NOT IN (2,3), a, a+10);
a IF(a IN (2,3), a, a+10)
1 11
4 14
2 2
3 3
SELECT a, IF(a BETWEEN 2 AND 3, a, a+10) FROM t1
ORDER BY IF(a BETWEEN 2 AND 3, a, a+10);
a IF(a BETWEEN 2 AND 3, a, a+10)
2 2
3 3
1 11
4 14
SELECT a, IF(a NOT BETWEEN 2 AND 3, a, a+10) FROM t1
ORDER BY IF(a NOT BETWEEN 2 AND 3, a, a+10);
a IF(a NOT BETWEEN 2 AND 3, a, a+10)
1 1
4 4
2 12
3 13
SELECT a, IF(a BETWEEN 2 AND 3, a, a+10) FROM t1
ORDER BY IF(a NOT BETWEEN 2 AND 3, a, a+10);
a IF(a BETWEEN 2 AND 3, a, a+10)
1 11
4 14
2 2
3 3
SELECT IF(a IN (1,2), a, '') as x1, IF(a NOT IN (1,2), a, '') as x2
FROM t1 GROUP BY x1, x2;
x1 x2
3
4
1
2
SELECT IF(a IN (1,2), a, '') as x1, IF(a NOT IN (1,2), a, '') as x2
FROM t1 GROUP BY x1, IF(a NOT IN (1,2), a, '');
x1 x2
3
4
1
2
SELECT a, a IN (1,2) FROM t1 ORDER BY a IN (1,2);
a a IN (1,2)
3 0
4 0
2 1
1 1
SELECT a FROM t1 ORDER BY a IN (1,2);
a
3
4
2
1
SELECT a+10 FROM t1 ORDER BY a IN (1,2);
a+10
13
14
12
11
SELECT a, IF(a IN (1,2), a, a+10) FROM t1
ORDER BY IF(a IN (3,4), a, a+10);
a IF(a IN (1,2), a, a+10)
3 13
4 14
1 1
2 2
DROP TABLE t1;
create table t1 (a int not null, b int not null, c int not null);
create table t1 (a int not null, b int not null, c int not null);
insert t1 values (1,1,1),(1,1,2),(1,2,1);
insert t1 values (1,1,1),(1,1,2),(1,2,1);
select a, b from t1 group by a, b order by sum(c);
select a, b from t1 group by a, b order by sum(c);
...
...
mysql-test/r/type_set.result
View file @
d08216f1
...
@@ -66,3 +66,22 @@ ss
...
@@ -66,3 +66,22 @@ ss
ue
ue
ue
ue
DROP TABLE t1;
DROP TABLE t1;
create table t1(f1
set('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','128'));
ERROR HY000: Too many strings for column f1 and SET
create table t1(f1
set('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','1'));
Warnings:
Note 1291 Column 'f1' has duplicated value '1' in SET
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`f1` set('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','1') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
mysql-test/t/errors.test
View file @
d08216f1
...
@@ -40,5 +40,17 @@ create table t1 (a int(256));
...
@@ -40,5 +40,17 @@ create table t1 (a int(256));
set
sql_mode
=
'traditional'
;
set
sql_mode
=
'traditional'
;
--
error
1074
--
error
1074
create
table
t1
(
a
varchar
(
66000
));
create
table
t1
(
a
varchar
(
66000
));
set
sql_mode
=
default
;
#
# Bug #27513: mysql 5.0.x + NULL pointer DoS
#
CREATE
TABLE
t1
(
a
INT
);
SELECT
a
FROM
t1
WHERE
a
IN
(
1
,
(
SELECT
IF
(
1
=
0
,
1
,
2
/
0
)));
INSERT
INTO
t1
VALUES
(
1
);
SELECT
a
FROM
t1
WHERE
a
IN
(
1
,
(
SELECT
IF
(
1
=
0
,
1
,
2
/
0
)));
INSERT
INTO
t1
VALUES
(
2
),(
3
);
SELECT
a
FROM
t1
WHERE
a
IN
(
1
,
(
SELECT
IF
(
1
=
0
,
1
,
2
/
0
)));
DROP
TABLE
t1
;
# End of 5.0 tests
# End of 5.0 tests
mysql-test/t/order_by.test
View file @
d08216f1
...
@@ -617,7 +617,6 @@ UPDATE bug25126 SET MissingCol = val ORDER BY MissingCol;
...
@@ -617,7 +617,6 @@ UPDATE bug25126 SET MissingCol = val ORDER BY MissingCol;
UPDATE
bug25126
SET
MissingCol
=
MissingCol
ORDER
BY
MissingCol
;
UPDATE
bug25126
SET
MissingCol
=
MissingCol
ORDER
BY
MissingCol
;
DROP
TABLE
bug25126
;
DROP
TABLE
bug25126
;
#
#
# Bug #25427: crash when order by expression contains a name
# Bug #25427: crash when order by expression contains a name
# that cannot be resolved unambiguously
# that cannot be resolved unambiguously
...
@@ -633,6 +632,41 @@ SELECT p.a AS val, q.a AS val FROM t1 p, t1 q ORDER BY val > 1;
...
@@ -633,6 +632,41 @@ SELECT p.a AS val, q.a AS val FROM t1 p, t1 q ORDER BY val > 1;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
#
# Bug #27532: ORDER/GROUP BY expressions with IN/BETWEEN and NOT IN/BETWEEN
#
CREATE
TABLE
t1
(
a
int
);
INSERT
INTO
t1
VALUES
(
3
),
(
2
),
(
4
),
(
1
);
SELECT
a
,
IF
(
a
IN
(
2
,
3
),
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
IN
(
2
,
3
),
a
,
a
+
10
);
SELECT
a
,
IF
(
a
NOT
IN
(
2
,
3
),
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
NOT
IN
(
2
,
3
),
a
,
a
+
10
);
SELECT
a
,
IF
(
a
IN
(
2
,
3
),
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
NOT
IN
(
2
,
3
),
a
,
a
+
10
);
SELECT
a
,
IF
(
a
BETWEEN
2
AND
3
,
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
BETWEEN
2
AND
3
,
a
,
a
+
10
);
SELECT
a
,
IF
(
a
NOT
BETWEEN
2
AND
3
,
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
NOT
BETWEEN
2
AND
3
,
a
,
a
+
10
);
SELECT
a
,
IF
(
a
BETWEEN
2
AND
3
,
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
NOT
BETWEEN
2
AND
3
,
a
,
a
+
10
);
SELECT
IF
(
a
IN
(
1
,
2
),
a
,
''
)
as
x1
,
IF
(
a
NOT
IN
(
1
,
2
),
a
,
''
)
as
x2
FROM
t1
GROUP
BY
x1
,
x2
;
SELECT
IF
(
a
IN
(
1
,
2
),
a
,
''
)
as
x1
,
IF
(
a
NOT
IN
(
1
,
2
),
a
,
''
)
as
x2
FROM
t1
GROUP
BY
x1
,
IF
(
a
NOT
IN
(
1
,
2
),
a
,
''
);
# The remaining queries are for better coverage
SELECT
a
,
a
IN
(
1
,
2
)
FROM
t1
ORDER
BY
a
IN
(
1
,
2
);
SELECT
a
FROM
t1
ORDER
BY
a
IN
(
1
,
2
);
SELECT
a
+
10
FROM
t1
ORDER
BY
a
IN
(
1
,
2
);
SELECT
a
,
IF
(
a
IN
(
1
,
2
),
a
,
a
+
10
)
FROM
t1
ORDER
BY
IF
(
a
IN
(
3
,
4
),
a
,
a
+
10
);
DROP
TABLE
t1
;
# End of 4.1
create
table
t1
(
a
int
not
null
,
b
int
not
null
,
c
int
not
null
);
create
table
t1
(
a
int
not
null
,
b
int
not
null
,
c
int
not
null
);
insert
t1
values
(
1
,
1
,
1
),(
1
,
1
,
2
),(
1
,
2
,
1
);
insert
t1
values
(
1
,
1
,
1
),(
1
,
1
,
2
),(
1
,
2
,
1
);
select
a
,
b
from
t1
group
by
a
,
b
order
by
sum
(
c
);
select
a
,
b
from
t1
group
by
a
,
b
order
by
sum
(
c
);
...
...
mysql-test/t/type_set.test
View file @
d08216f1
...
@@ -39,3 +39,20 @@ SELECT c FROM t1 ORDER BY concat(c);
...
@@ -39,3 +39,20 @@ SELECT c FROM t1 ORDER BY concat(c);
DROP
TABLE
t1
;
DROP
TABLE
t1
;
# End of 4.1 tests
# End of 4.1 tests
#
# Bug#27069 set with identical elements are created
#
--
error
1097
create
table
t1
(
f1
set
(
'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'
,
'128'
));
create
table
t1
(
f1
set
(
'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'
,
'1'
));
show
create
table
t1
;
drop
table
t1
;
sql/field.cc
View file @
d08216f1
...
@@ -8981,11 +8981,6 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type,
...
@@ -8981,11 +8981,6 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type,
break
;
break
;
case
MYSQL_TYPE_SET
:
case
MYSQL_TYPE_SET
:
{
{
if
(
fld_interval_list
->
elements
>
sizeof
(
longlong
)
*
8
)
{
my_error
(
ER_TOO_BIG_SET
,
MYF
(
0
),
fld_name
);
/* purecov: inspected */
DBUG_RETURN
(
TRUE
);
}
pack_length
=
get_set_pack_length
(
fld_interval_list
->
elements
);
pack_length
=
get_set_pack_length
(
fld_interval_list
->
elements
);
List_iterator
<
String
>
it
(
*
fld_interval_list
);
List_iterator
<
String
>
it
(
*
fld_interval_list
);
...
...
sql/item_cmpfunc.cc
View file @
d08216f1
...
@@ -1127,6 +1127,26 @@ longlong Item_func_strcmp::val_int()
...
@@ -1127,6 +1127,26 @@ longlong Item_func_strcmp::val_int()
}
}
bool
Item_func_opt_neg
::
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
{
/* Assume we don't have rtti */
if
(
this
==
item
)
return
1
;
if
(
item
->
type
()
!=
FUNC_ITEM
)
return
0
;
Item_func
*
item_func
=
(
Item_func
*
)
item
;
if
(
arg_count
!=
item_func
->
arg_count
||
functype
()
!=
item_func
->
functype
())
return
0
;
if
(
negated
!=
((
Item_func_opt_neg
*
)
item_func
)
->
negated
)
return
0
;
for
(
uint
i
=
0
;
i
<
arg_count
;
i
++
)
if
(
!
args
[
i
]
->
eq
(
item_func
->
arguments
()[
i
],
binary_cmp
))
return
0
;
return
1
;
}
void
Item_func_interval
::
fix_length_and_dec
()
void
Item_func_interval
::
fix_length_and_dec
()
{
{
use_decimal_comparison
=
((
row
->
element_index
(
0
)
->
result_type
()
==
use_decimal_comparison
=
((
row
->
element_index
(
0
)
->
result_type
()
==
...
...
sql/item_cmpfunc.h
View file @
d08216f1
...
@@ -563,6 +563,7 @@ class Item_func_opt_neg :public Item_int_func
...
@@ -563,6 +563,7 @@ class Item_func_opt_neg :public Item_int_func
negated
=
!
negated
;
negated
=
!
negated
;
return
this
;
return
this
;
}
}
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
subst_argument_checker
(
byte
**
arg
)
{
return
TRUE
;
}
bool
subst_argument_checker
(
byte
**
arg
)
{
return
TRUE
;
}
};
};
...
...
sql/sql_table.cc
View file @
d08216f1
...
@@ -1922,6 +1922,7 @@ static int sort_keys(KEY *a, KEY *b)
...
@@ -1922,6 +1922,7 @@ static int sort_keys(KEY *a, KEY *b)
set_or_name "SET" or "ENUM" string for warning message
set_or_name "SET" or "ENUM" string for warning message
name name of the checked column
name name of the checked column
typelib list of values for the column
typelib list of values for the column
dup_val_count returns count of duplicate elements
DESCRIPTION
DESCRIPTION
This function prints an warning for each value in list
This function prints an warning for each value in list
...
@@ -1933,11 +1934,12 @@ static int sort_keys(KEY *a, KEY *b)
...
@@ -1933,11 +1934,12 @@ static int sort_keys(KEY *a, KEY *b)
void
check_duplicates_in_interval
(
const
char
*
set_or_name
,
void
check_duplicates_in_interval
(
const
char
*
set_or_name
,
const
char
*
name
,
TYPELIB
*
typelib
,
const
char
*
name
,
TYPELIB
*
typelib
,
CHARSET_INFO
*
cs
)
CHARSET_INFO
*
cs
,
unsigned
int
*
dup_val_count
)
{
{
TYPELIB
tmp
=
*
typelib
;
TYPELIB
tmp
=
*
typelib
;
const
char
**
cur_value
=
typelib
->
type_names
;
const
char
**
cur_value
=
typelib
->
type_names
;
unsigned
int
*
cur_length
=
typelib
->
type_lengths
;
unsigned
int
*
cur_length
=
typelib
->
type_lengths
;
*
dup_val_count
=
0
;
for
(
;
tmp
.
count
>
1
;
cur_value
++
,
cur_length
++
)
for
(
;
tmp
.
count
>
1
;
cur_value
++
,
cur_length
++
)
{
{
...
@@ -1950,6 +1952,7 @@ void check_duplicates_in_interval(const char *set_or_name,
...
@@ -1950,6 +1952,7 @@ void check_duplicates_in_interval(const char *set_or_name,
ER_DUPLICATED_VALUE_IN_TYPE
,
ER_DUPLICATED_VALUE_IN_TYPE
,
ER
(
ER_DUPLICATED_VALUE_IN_TYPE
),
ER
(
ER_DUPLICATED_VALUE_IN_TYPE
),
name
,
*
cur_value
,
set_or_name
);
name
,
*
cur_value
,
set_or_name
);
(
*
dup_val_count
)
++
;
}
}
}
}
}
}
...
@@ -2013,6 +2016,7 @@ int prepare_create_field(create_field *sql_field,
...
@@ -2013,6 +2016,7 @@ int prepare_create_field(create_field *sql_field,
int
*
timestamps
,
int
*
timestamps_with_niladic
,
int
*
timestamps
,
int
*
timestamps_with_niladic
,
longlong
table_flags
)
longlong
table_flags
)
{
{
unsigned
int
dup_val_count
;
DBUG_ENTER
(
"prepare_field"
);
DBUG_ENTER
(
"prepare_field"
);
/*
/*
...
@@ -2088,7 +2092,7 @@ int prepare_create_field(create_field *sql_field,
...
@@ -2088,7 +2092,7 @@ int prepare_create_field(create_field *sql_field,
sql_field
->
unireg_check
=
Field
::
INTERVAL_FIELD
;
sql_field
->
unireg_check
=
Field
::
INTERVAL_FIELD
;
check_duplicates_in_interval
(
"ENUM"
,
sql_field
->
field_name
,
check_duplicates_in_interval
(
"ENUM"
,
sql_field
->
field_name
,
sql_field
->
interval
,
sql_field
->
interval
,
sql_field
->
charset
);
sql_field
->
charset
,
&
dup_val_count
);
break
;
break
;
case
MYSQL_TYPE_SET
:
case
MYSQL_TYPE_SET
:
sql_field
->
pack_flag
=
pack_length_to_packflag
(
sql_field
->
pack_length
)
|
sql_field
->
pack_flag
=
pack_length_to_packflag
(
sql_field
->
pack_length
)
|
...
@@ -2098,7 +2102,13 @@ int prepare_create_field(create_field *sql_field,
...
@@ -2098,7 +2102,13 @@ int prepare_create_field(create_field *sql_field,
sql_field
->
unireg_check
=
Field
::
BIT_FIELD
;
sql_field
->
unireg_check
=
Field
::
BIT_FIELD
;
check_duplicates_in_interval
(
"SET"
,
sql_field
->
field_name
,
check_duplicates_in_interval
(
"SET"
,
sql_field
->
field_name
,
sql_field
->
interval
,
sql_field
->
interval
,
sql_field
->
charset
);
sql_field
->
charset
,
&
dup_val_count
);
/* Check that count of unique members is not more then 64 */
if
(
sql_field
->
interval
->
count
-
dup_val_count
>
sizeof
(
longlong
)
*
8
)
{
my_error
(
ER_TOO_BIG_SET
,
MYF
(
0
),
sql_field
->
field_name
);
DBUG_RETURN
(
1
);
}
break
;
break
;
case
MYSQL_TYPE_DATE
:
// Rest of string types
case
MYSQL_TYPE_DATE
:
// Rest of string types
case
MYSQL_TYPE_NEWDATE
:
case
MYSQL_TYPE_NEWDATE
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment