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
834e8228
Commit
834e8228
authored
Apr 07, 2007
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk@192.168.21.1:mysql-4.1
into mysql.com:/d2/hf/mrg/mysql-4.1-opt
parents
72098c7f
64632979
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
140 additions
and
0 deletions
+140
-0
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
-0
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 @
834e8228
...
...
@@ -879,3 +879,87 @@ 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;
mysql-test/t/order_by.test
View file @
834e8228
...
...
@@ -619,4 +619,39 @@ 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 tests
sql/item_cmpfunc.cc
View file @
834e8228
...
...
@@ -838,6 +838,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
()
{
if
(
row
->
cols
()
>
8
)
...
...
sql/item_cmpfunc.h
View file @
834e8228
...
...
@@ -405,6 +405,7 @@ class Item_func_opt_neg :public Item_int_func
negated
=
!
negated
;
return
this
;
}
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
};
...
...
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