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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a64ac380
Commit
a64ac380
authored
Aug 23, 2004
by
serg@serg.mylan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
better for for bug#4767
parent
f0fffbe2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
12 deletions
+14
-12
sql/item_sum.cc
sql/item_sum.cc
+0
-3
sql/sql_select.cc
sql/sql_select.cc
+14
-9
No files found.
sql/item_sum.cc
View file @
a64ac380
...
@@ -159,10 +159,7 @@ Item *Item_sum::get_tmp_table_item(THD *thd)
...
@@ -159,10 +159,7 @@ Item *Item_sum::get_tmp_table_item(THD *thd)
if
(
!
arg
->
const_item
())
if
(
!
arg
->
const_item
())
{
{
if
(
arg
->
type
()
==
Item
::
FIELD_ITEM
)
if
(
arg
->
type
()
==
Item
::
FIELD_ITEM
)
{
arg
->
maybe_null
=
result_field_tmp
->
maybe_null
();
((
Item_field
*
)
arg
)
->
field
=
result_field_tmp
++
;
((
Item_field
*
)
arg
)
->
field
=
result_field_tmp
++
;
}
else
else
sum_item
->
args
[
i
]
=
new
Item_field
(
result_field_tmp
++
);
sum_item
->
args
[
i
]
=
new
Item_field
(
result_field_tmp
++
);
}
}
...
...
sql/sql_select.cc
View file @
a64ac380
...
@@ -4740,7 +4740,7 @@ static Field* create_tmp_field_from_item(THD *thd,
...
@@ -4740,7 +4740,7 @@ static Field* create_tmp_field_from_item(THD *thd,
copy_func If set and item is a function, store copy of item
copy_func If set and item is a function, store copy of item
in this array
in this array
from_field if field will be created using other field as example,
from_field if field will be created using other field as example,
pointer example field will be written here
pointer example field will be written here
group 1 if we are going to do a relative group by on result
group 1 if we are going to do a relative group by on result
modify_item 1 if item->result_field should point to new item.
modify_item 1 if item->result_field should point to new item.
This is relevent for how fill_record() is going to
This is relevent for how fill_record() is going to
...
@@ -4749,7 +4749,7 @@ static Field* create_tmp_field_from_item(THD *thd,
...
@@ -4749,7 +4749,7 @@ static Field* create_tmp_field_from_item(THD *thd,
the record in the original table.
the record in the original table.
If modify_item is 0 then fill_record() will update
If modify_item is 0 then fill_record() will update
the temporary table
the temporary table
RETURN
RETURN
0 on error
0 on error
new_created field
new_created field
...
@@ -4773,13 +4773,13 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
...
@@ -4773,13 +4773,13 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
return
new
Field_double
(
item_sum
->
max_length
,
maybe_null
,
return
new
Field_double
(
item_sum
->
max_length
,
maybe_null
,
item
->
name
,
table
,
item_sum
->
decimals
);
item
->
name
,
table
,
item_sum
->
decimals
);
case
Item_sum
:
:
VARIANCE_FUNC
:
/* Place for sum & count */
case
Item_sum
:
:
VARIANCE_FUNC
:
/* Place for sum & count */
case
Item_sum
:
:
STD_FUNC
:
case
Item_sum
:
:
STD_FUNC
:
if
(
group
)
if
(
group
)
return
new
Field_string
(
sizeof
(
double
)
*
2
+
sizeof
(
longlong
),
return
new
Field_string
(
sizeof
(
double
)
*
2
+
sizeof
(
longlong
),
0
,
item
->
name
,
table
,
&
my_charset_bin
);
0
,
item
->
name
,
table
,
&
my_charset_bin
);
else
else
return
new
Field_double
(
item_sum
->
max_length
,
maybe_null
,
return
new
Field_double
(
item_sum
->
max_length
,
maybe_null
,
item
->
name
,
table
,
item_sum
->
decimals
);
item
->
name
,
table
,
item_sum
->
decimals
);
case
Item_sum
:
:
UNIQUE_USERS_FUNC
:
case
Item_sum
:
:
UNIQUE_USERS_FUNC
:
return
new
Field_long
(
9
,
maybe_null
,
item
->
name
,
table
,
1
);
return
new
Field_long
(
9
,
maybe_null
,
item
->
name
,
table
,
1
);
default:
default:
...
@@ -4887,7 +4887,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
...
@@ -4887,7 +4887,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
else
// if we run out of slots or we are not using tempool
else
// if we run out of slots or we are not using tempool
sprintf
(
path
,
"%s%s%lx_%lx_%x"
,
mysql_tmpdir
,
tmp_file_prefix
,
current_pid
,
sprintf
(
path
,
"%s%s%lx_%lx_%x"
,
mysql_tmpdir
,
tmp_file_prefix
,
current_pid
,
thd
->
thread_id
,
thd
->
tmp_table
++
);
thd
->
thread_id
,
thd
->
tmp_table
++
);
if
(
lower_case_table_names
)
if
(
lower_case_table_names
)
my_casedn_str
(
files_charset_info
,
path
);
my_casedn_str
(
files_charset_info
,
path
);
...
@@ -5003,16 +5003,21 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
...
@@ -5003,16 +5003,21 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
tmp_from_field
++
;
tmp_from_field
++
;
*
(
reg_field
++
)
=
new_field
;
*
(
reg_field
++
)
=
new_field
;
reclength
+=
new_field
->
pack_length
();
reclength
+=
new_field
->
pack_length
();
if
(
!
(
new_field
->
flags
&
NOT_NULL_FLAG
))
null_count
++
;
if
(
new_field
->
flags
&
BLOB_FLAG
)
if
(
new_field
->
flags
&
BLOB_FLAG
)
{
{
*
blob_field
++=
new_field
;
*
blob_field
++=
new_field
;
blob_count
++
;
blob_count
++
;
}
}
((
Item_sum
*
)
item
)
->
args
[
i
]
=
new
Item_field
(
new_field
);
((
Item_sum
*
)
item
)
->
args
[
i
]
=
new
Item_field
(
new_field
);
if
(((
Item_sum
*
)
item
)
->
arg_count
==
1
)
if
(
!
(
new_field
->
flags
&
NOT_NULL_FLAG
))
((
Item_sum
*
)
item
)
->
result_field
=
new_field
;
{
null_count
++
;
/*
new_field->maybe_null() is still false, it will be
changed below. But we have to setup Item_field correctly
*/
((
Item_sum
*
)
item
)
->
args
[
i
]
->
maybe_null
=
1
;
}
}
}
}
}
}
}
...
...
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