mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merged
This commit is contained in:
@ -1153,6 +1153,19 @@ INSERT INTO t1 VALUES (1,0,NULL,NULL),(2,0,NULL,NULL);
|
|||||||
SELECT DISTINCT REF_ID FROM t1 WHERE ID= (SELECT DISTINCT REF_ID FROM t1 WHERE ID=2);
|
SELECT DISTINCT REF_ID FROM t1 WHERE ID= (SELECT DISTINCT REF_ID FROM t1 WHERE ID=2);
|
||||||
REF_ID
|
REF_ID
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
create table t2 (a int, b int);
|
||||||
|
insert into t1 values (1,0), (2,0), (3,0);
|
||||||
|
insert into t2 values (1,1), (2,1), (3,1), (2,2);
|
||||||
|
update ignore t1 set b=(select b from t2 where t1.a=t2.a);
|
||||||
|
Warnings:
|
||||||
|
Error 1240 Subselect returns more than 1 record
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
2 NULL
|
||||||
|
3 1
|
||||||
|
drop table t1, t2;
|
||||||
create table t1(City VARCHAR(30),Location geometry);
|
create table t1(City VARCHAR(30),Location geometry);
|
||||||
insert into t1 values("Paris",GeomFromText('POINT(2.33 48.87)'));
|
insert into t1 values("Paris",GeomFromText('POINT(2.33 48.87)'));
|
||||||
select City from t1 where (select intersects(GeomFromText(AsText(Location)),GeomFromText('Polygon((2 50, 2.5 50, 2.5 47, 2 47, 2 50))'))=0);
|
select City from t1 where (select intersects(GeomFromText(AsText(Location)),GeomFromText('Polygon((2 50, 2.5 50, 2.5 47, 2 47, 2 50))'))=0);
|
||||||
|
@ -739,6 +739,19 @@ INSERT INTO t1 VALUES (1,0,NULL,NULL),(2,0,NULL,NULL);
|
|||||||
SELECT DISTINCT REF_ID FROM t1 WHERE ID= (SELECT DISTINCT REF_ID FROM t1 WHERE ID=2);
|
SELECT DISTINCT REF_ID FROM t1 WHERE ID= (SELECT DISTINCT REF_ID FROM t1 WHERE ID=2);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# uninterruptable update
|
||||||
|
#
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
create table t2 (a int, b int);
|
||||||
|
|
||||||
|
insert into t1 values (1,0), (2,0), (3,0);
|
||||||
|
insert into t2 values (1,1), (2,1), (3,1), (2,2);
|
||||||
|
|
||||||
|
update ignore t1 set b=(select b from t2 where t1.a=t2.a);
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
# correct behavoiur for function from reduced subselect
|
# correct behavoiur for function from reduced subselect
|
||||||
|
@ -1818,15 +1818,23 @@ extern "C" int my_message_sql(uint error, const char *str,
|
|||||||
{
|
{
|
||||||
THD *thd;
|
THD *thd;
|
||||||
DBUG_ENTER("my_message_sql");
|
DBUG_ENTER("my_message_sql");
|
||||||
DBUG_PRINT("error",("Message: '%s'",str));
|
DBUG_PRINT("error", ("Message: '%s'", str));
|
||||||
if ((thd=current_thd))
|
if ((thd= current_thd))
|
||||||
{
|
{
|
||||||
NET *net= &thd->net;
|
if (thd->lex.current_select->no_error && !thd->is_fatal_error)
|
||||||
net->report_error= 1;
|
|
||||||
if (!net->last_error[0]) // Return only first message
|
|
||||||
{
|
{
|
||||||
strmake(net->last_error,str,sizeof(net->last_error)-1);
|
DBUG_PRINT("error", ("above error converted to warning"));
|
||||||
net->last_errno=error ? error : ER_UNKNOWN_ERROR;
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, error, str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NET *net= &thd->net;
|
||||||
|
net->report_error= 1;
|
||||||
|
if (!net->last_error[0]) // Return only first message
|
||||||
|
{
|
||||||
|
strmake(net->last_error, str, sizeof(net->last_error)-1);
|
||||||
|
net->last_errno= error ? error : ER_UNKNOWN_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -122,6 +122,7 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
|
|||||||
lex->yacc_yyss=lex->yacc_yyvs=0;
|
lex->yacc_yyss=lex->yacc_yyvs=0;
|
||||||
lex->ignore_space=test(thd->variables.sql_mode & MODE_IGNORE_SPACE);
|
lex->ignore_space=test(thd->variables.sql_mode & MODE_IGNORE_SPACE);
|
||||||
lex->sql_command=SQLCOM_END;
|
lex->sql_command=SQLCOM_END;
|
||||||
|
lex->duplicates= DUP_ERROR;
|
||||||
return lex;
|
return lex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -965,7 +966,7 @@ void st_select_lex_node::init_query()
|
|||||||
{
|
{
|
||||||
options= 0;
|
options= 0;
|
||||||
linkage= UNSPECIFIED_TYPE;
|
linkage= UNSPECIFIED_TYPE;
|
||||||
no_table_names_allowed= uncacheable= dependent= 0;
|
no_error= no_table_names_allowed= uncacheable= dependent= 0;
|
||||||
ref_pointer_array= 0;
|
ref_pointer_array= 0;
|
||||||
cond_count= 0;
|
cond_count= 0;
|
||||||
}
|
}
|
||||||
|
@ -213,6 +213,7 @@ public:
|
|||||||
bool dependent; /* dependent from outer select subselect */
|
bool dependent; /* dependent from outer select subselect */
|
||||||
bool uncacheable; /* result of this query can't be cached */
|
bool uncacheable; /* result of this query can't be cached */
|
||||||
bool no_table_names_allowed; /* used for global order by */
|
bool no_table_names_allowed; /* used for global order by */
|
||||||
|
bool no_error; /* suppress error message (convert it to warnings) */
|
||||||
|
|
||||||
static void *operator new(size_t size)
|
static void *operator new(size_t size)
|
||||||
{
|
{
|
||||||
|
@ -436,6 +436,9 @@ JOIN::optimize()
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
optimized= 1;
|
optimized= 1;
|
||||||
|
|
||||||
|
// Ignore errors of execution if option IGNORE present
|
||||||
|
if (thd->lex.duplicates == DUP_IGNORE)
|
||||||
|
thd->lex.current_select->no_error= 1;
|
||||||
#ifdef HAVE_REF_TO_FIELDS // Not done yet
|
#ifdef HAVE_REF_TO_FIELDS // Not done yet
|
||||||
/* Add HAVING to WHERE if possible */
|
/* Add HAVING to WHERE if possible */
|
||||||
if (having && !group_list && !sum_func_count)
|
if (having && !group_list && !sum_func_count)
|
||||||
|
Reference in New Issue
Block a user