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
5d056de5
Commit
5d056de5
authored
Jun 20, 2007
by
gshchepa/uchum@gleb.loc
Browse files
Options
Browse Files
Download
Plain Diff
Merge gleb.loc:/home/uchum/work/bk/5.0-opt-28898
into gleb.loc:/home/uchum/work/bk/5.0-opt
parents
438422d9
2379f977
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
85 additions
and
5 deletions
+85
-5
mysql-test/r/metadata.result
mysql-test/r/metadata.result
+41
-0
mysql-test/t/metadata.test
mysql-test/t/metadata.test
+21
-0
sql/item.cc
sql/item.cc
+15
-0
sql/item.h
sql/item.h
+1
-5
sql/sql_select.cc
sql/sql_select.cc
+7
-0
No files found.
mysql-test/r/metadata.result
View file @
5d056de5
...
@@ -140,4 +140,45 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is
...
@@ -140,4 +140,45 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is
def a v_small v_small 3 9 9 N 32769 0 63
def a v_small v_small 3 9 9 N 32769 0 63
v_small
v_small
214748364
214748364
CREATE TABLE t1 (c1 CHAR(1));
CREATE TABLE t2 (c2 CHAR(1));
CREATE VIEW v1 AS SELECT t1.c1 FROM t1;
CREATE VIEW v2 AS SELECT t2.c2 FROM t2;
INSERT INTO t1 VALUES ('1'), ('2'), ('3');
INSERT INTO t2 VALUES ('1'), ('2'), ('3'), ('2');
SELECT v1.c1 FROM v1 JOIN t2 ON c1=c2 ORDER BY 1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 c1 c1 254 1 1 Y 0 0 8
c1
1
2
2
3
SELECT v1.c1, v2.c2 FROM v1 JOIN v2 ON c1=c2;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 c1 c1 254 1 1 Y 0 0 8
def test t2 v2 c2 c2 254 1 1 Y 0 0 8
c1 c2
1 1
2 2
3 3
2 2
SELECT v1.c1, v2.c2 FROM v1 JOIN v2 ON c1=c2 GROUP BY v1.c1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 c1 c1 254 1 1 Y 32768 0 8
def test t2 v2 c2 c2 254 1 1 Y 0 0 8
c1 c2
1 1
2 2
3 3
SELECT v1.c1, v2.c2 FROM v1 JOIN v2 ON c1=c2 GROUP BY v1.c1 ORDER BY v2.c2;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 c1 c1 254 1 1 Y 32768 0 8
def test t2 v2 c2 c2 254 1 1 Y 0 0 8
c1 c2
1 1
2 2
3 3
DROP VIEW v1;
DROP TABLE t1,t2;
End of 5.0 tests
End of 5.0 tests
mysql-test/t/metadata.test
View file @
5d056de5
...
@@ -90,5 +90,26 @@ select a.* from (select 2147483648 as v_large) a;
...
@@ -90,5 +90,26 @@ select a.* from (select 2147483648 as v_large) a;
select
a
.*
from
(
select
214748364
as
v_small
)
a
;
select
a
.*
from
(
select
214748364
as
v_small
)
a
;
--
disable_metadata
--
disable_metadata
#
# Bug #28898: table alias and database name of VIEW columns is empty in the
# metadata of # SELECT statement where join is executed via temporary table.
#
CREATE
TABLE
t1
(
c1
CHAR
(
1
));
CREATE
TABLE
t2
(
c2
CHAR
(
1
));
CREATE
VIEW
v1
AS
SELECT
t1
.
c1
FROM
t1
;
CREATE
VIEW
v2
AS
SELECT
t2
.
c2
FROM
t2
;
INSERT
INTO
t1
VALUES
(
'1'
),
(
'2'
),
(
'3'
);
INSERT
INTO
t2
VALUES
(
'1'
),
(
'2'
),
(
'3'
),
(
'2'
);
--
enable_metadata
SELECT
v1
.
c1
FROM
v1
JOIN
t2
ON
c1
=
c2
ORDER
BY
1
;
SELECT
v1
.
c1
,
v2
.
c2
FROM
v1
JOIN
v2
ON
c1
=
c2
;
SELECT
v1
.
c1
,
v2
.
c2
FROM
v1
JOIN
v2
ON
c1
=
c2
GROUP
BY
v1
.
c1
;
SELECT
v1
.
c1
,
v2
.
c2
FROM
v1
JOIN
v2
ON
c1
=
c2
GROUP
BY
v1
.
c1
ORDER
BY
v2
.
c2
;
--
disable_metadata
DROP
VIEW
v1
;
DROP
TABLE
t1
,
t2
;
--
echo
End
of
5.0
tests
--
echo
End
of
5.0
tests
sql/item.cc
View file @
5d056de5
...
@@ -5501,6 +5501,21 @@ void Item_ref::make_field(Send_field *field)
...
@@ -5501,6 +5501,21 @@ void Item_ref::make_field(Send_field *field)
}
}
Item
*
Item_ref
::
get_tmp_table_item
(
THD
*
thd
)
{
if
(
!
result_field
)
return
(
*
ref
)
->
get_tmp_table_item
(
thd
);
Item_field
*
item
=
new
Item_field
(
result_field
);
if
(
item
)
{
item
->
table_name
=
table_name
;
item
->
db_name
=
db_name
;
}
return
item
;
}
void
Item_ref_null_helper
::
print
(
String
*
str
)
void
Item_ref_null_helper
::
print
(
String
*
str
)
{
{
str
->
append
(
STRING_WITH_LEN
(
"<ref_null_helper>("
));
str
->
append
(
STRING_WITH_LEN
(
"<ref_null_helper>("
));
...
...
sql/item.h
View file @
5d056de5
...
@@ -1904,11 +1904,7 @@ class Item_ref :public Item_ident
...
@@ -1904,11 +1904,7 @@ class Item_ref :public Item_ident
enum_field_types
field_type
()
const
{
return
(
*
ref
)
->
field_type
();
}
enum_field_types
field_type
()
const
{
return
(
*
ref
)
->
field_type
();
}
Field
*
get_tmp_table_field
()
Field
*
get_tmp_table_field
()
{
return
result_field
?
result_field
:
(
*
ref
)
->
get_tmp_table_field
();
}
{
return
result_field
?
result_field
:
(
*
ref
)
->
get_tmp_table_field
();
}
Item
*
get_tmp_table_item
(
THD
*
thd
)
Item
*
get_tmp_table_item
(
THD
*
thd
);
{
return
(
result_field
?
new
Item_field
(
result_field
)
:
(
*
ref
)
->
get_tmp_table_item
(
thd
));
}
table_map
used_tables
()
const
table_map
used_tables
()
const
{
{
return
depended_from
?
OUTER_REF_TABLE_BIT
:
(
*
ref
)
->
used_tables
();
return
depended_from
?
OUTER_REF_TABLE_BIT
:
(
*
ref
)
->
used_tables
();
...
...
sql/sql_select.cc
View file @
5d056de5
...
@@ -14245,6 +14245,13 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
...
@@ -14245,6 +14245,13 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
if
(
!
item_field
)
if
(
!
item_field
)
DBUG_RETURN
(
TRUE
);
// Fatal error
DBUG_RETURN
(
TRUE
);
// Fatal error
item_field
->
name
=
item
->
name
;
item_field
->
name
=
item
->
name
;
if
(
item
->
type
()
==
Item
::
REF_ITEM
)
{
Item_field
*
ifield
=
(
Item_field
*
)
item_field
;
Item_ref
*
iref
=
(
Item_ref
*
)
item
;
ifield
->
table_name
=
iref
->
table_name
;
ifield
->
db_name
=
iref
->
db_name
;
}
#ifndef DBUG_OFF
#ifndef DBUG_OFF
if
(
_db_on_
&&
!
item_field
->
name
)
if
(
_db_on_
&&
!
item_field
->
name
)
{
{
...
...
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