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
83050c65
Commit
83050c65
authored
Apr 04, 2007
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into magare.gmz:/home/kgeorge/mysql/autopush/B27513-5.0-opt
parents
cc4facaa
bfd92de9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
140 additions
and
1 deletion
+140
-1
mysql-test/r/order_by.result
mysql-test/r/order_by.result
+84
-0
mysql-test/t/order_by.test
mysql-test/t/order_by.test
+35
-1
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+20
-0
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+1
-0
No files found.
mysql-test/r/order_by.result
View file @
83050c65
...
...
@@ -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;
ERROR 23000: Column 'val' in order clause is ambiguous
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);
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);
...
...
mysql-test/t/order_by.test
View file @
83050c65
...
...
@@ -617,7 +617,6 @@ UPDATE bug25126 SET MissingCol = val ORDER BY MissingCol;
UPDATE
bug25126
SET
MissingCol
=
MissingCol
ORDER
BY
MissingCol
;
DROP
TABLE
bug25126
;
#
# Bug #25427: crash when order by expression contains a name
# 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;
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
);
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
);
...
...
sql/item_cmpfunc.cc
View file @
83050c65
...
...
@@ -1079,6 +1079,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
()
{
use_decimal_comparison
=
(
row
->
element_index
(
0
)
->
result_type
()
==
DECIMAL_RESULT
)
||
...
...
sql/item_cmpfunc.h
View file @
83050c65
...
...
@@ -561,6 +561,7 @@ class Item_func_opt_neg :public Item_int_func
negated
=
!
negated
;
return
this
;
}
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
subst_argument_checker
(
byte
**
arg
)
{
return
TRUE
;
}
};
...
...
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