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
2e52a69b
Commit
2e52a69b
authored
Oct 03, 2002
by
monty@mashka.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge work:/my/mysql-4.1 into mashka.mysql.fi:/home/my/mysql-4.1
parents
62a26cf8
70ee4943
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
61 additions
and
56 deletions
+61
-56
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-0
heap/hp_create.c
heap/hp_create.c
+11
-7
include/mysql.h
include/mysql.h
+2
-2
sql/ha_heap.cc
sql/ha_heap.cc
+0
-13
sql/item.cc
sql/item.cc
+15
-6
sql/mysql_priv.h
sql/mysql_priv.h
+3
-2
sql/sql_base.cc
sql/sql_base.cc
+13
-10
sql/sql_lex.cc
sql/sql_lex.cc
+5
-5
sql/sql_parse.cc
sql/sql_parse.cc
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+4
-7
sql/sql_yacc.yy
sql/sql_yacc.yy
+6
-3
No files found.
BitKeeper/etc/logging_ok
View file @
2e52a69b
...
...
@@ -56,6 +56,7 @@ paul@teton.kitebird.com
peter@linux.local
peter@mysql.com
ram@gw.udmsearch.izhnet.ru
ram@mysql.r18.ru
ram@ram.(none)
root@x3.internalnet
salle@geopard.(none)
...
...
heap/hp_create.c
View file @
2e52a69b
...
...
@@ -85,15 +85,24 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
memcpy
(
share
->
keydef
,
keydef
,
(
size_t
)
(
sizeof
(
keydef
[
0
])
*
keys
));
for
(
i
=
0
,
keyinfo
=
share
->
keydef
;
i
<
keys
;
i
++
,
keyinfo
++
)
{
uint
nsegs
=
keydef
[
i
].
keysegs
;
keyinfo
->
seg
=
keyseg
;
memcpy
(
keyseg
,
keydef
[
i
].
seg
,
(
size_t
)
(
sizeof
(
keyseg
[
0
])
*
keydef
[
i
].
keysegs
));
keyseg
+=
keydef
[
i
].
keysegs
;
if
(
keydef
[
i
].
algorithm
==
HA_KEY_ALG_BTREE
)
{
/* additional HA_KEYTYPE_END keyseg */
keyseg
->
type
=
HA_KEYTYPE_END
;
keyseg
->
length
=
sizeof
(
byte
*
);
keyseg
->
flag
=
0
;
keyseg
->
null_bit
=
0
;
keyseg
++
;
init_tree
(
&
keyinfo
->
rb_tree
,
0
,
0
,
sizeof
(
byte
*
),
(
qsort_cmp2
)
keys_compare
,
1
,
NULL
,
NULL
);
keyinfo
->
delete_key
=
hp_rb_delete_key
;
keyinfo
->
write_key
=
hp_rb_write_key
;
nsegs
++
;
}
else
{
...
...
@@ -102,12 +111,7 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
keyinfo
->
delete_key
=
hp_delete_key
;
keyinfo
->
write_key
=
hp_write_key
;
}
keyinfo
->
seg
=
keyseg
;
memcpy
(
keyseg
,
keydef
[
i
].
seg
,
(
size_t
)
(
sizeof
(
keyseg
[
0
])
*
nsegs
));
keyseg
+=
nsegs
;
}
share
->
min_records
=
min_records
;
share
->
max_records
=
max_records
;
share
->
data_length
=
share
->
index_length
=
0
;
...
...
include/mysql.h
View file @
2e52a69b
...
...
@@ -447,7 +447,7 @@ typedef struct st_mysql_stmt
unsigned
long
param_count
;
/* parameters count */
unsigned
long
field_count
;
/* fields count */
unsigned
long
long_length
;
/* long buffer alloced length */
u
long
stmt_id
;
/* Id for prepared statement */
u
nsigned
long
stmt_id
;
/* Id for prepared statement */
uint
last_errno
;
/* error code */
enum
MY_STMT_STATE
state
;
/* statement state */
char
last_error
[
MYSQL_ERRMSG_SIZE
];
/* error message */
...
...
@@ -506,7 +506,7 @@ int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
my_bool
simple_command
(
MYSQL
*
mysql
,
enum
enum_server_command
command
,
const
char
*
arg
,
ulong
length
,
my_bool
skip_check
);
u
nsigned
long
length
,
my_bool
skip_check
);
unsigned
long
net_safe_read
(
MYSQL
*
mysql
);
#ifdef __cplusplus
...
...
sql/ha_heap.cc
View file @
2e52a69b
...
...
@@ -246,11 +246,7 @@ int ha_heap::create(const char *name, TABLE *table,
int
error
;
for
(
key
=
parts
=
0
;
key
<
table
->
keys
;
key
++
)
{
parts
+=
table
->
key_info
[
key
].
key_parts
;
if
(
table
->
key_info
[
key
].
algorithm
==
HA_KEY_ALG_BTREE
)
parts
++
;
/* additional HA_KEYTYPE_END keyseg */
}
if
(
!
(
keydef
=
(
HP_KEYDEF
*
)
my_malloc
(
table
->
keys
*
sizeof
(
HP_KEYDEF
)
+
parts
*
sizeof
(
HA_KEYSEG
),
...
...
@@ -301,15 +297,6 @@ int ha_heap::create(const char *name, TABLE *table,
seg
->
null_pos
=
0
;
}
}
if
(
pos
->
algorithm
==
HA_KEY_ALG_BTREE
)
{
/* additional HA_KEYTYPE_END keyseg */
seg
->
type
=
HA_KEYTYPE_END
;
seg
->
length
=
sizeof
(
byte
*
);
seg
->
flag
=
0
;
seg
->
null_bit
=
0
;
seg
++
;
}
}
mem_per_row
+=
MY_ALIGN
(
table
->
reclength
+
1
,
sizeof
(
char
*
));
max_rows
=
(
ulong
)
(
current_thd
->
variables
.
max_heap_table_size
/
...
...
sql/item.cc
View file @
2e52a69b
...
...
@@ -432,7 +432,7 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
if
(
!
field
)
// If field is not checked
{
Field
*
tmp
;
if
(
!
(
tmp
=
find_field_in_tables
(
thd
,
this
,
tables
)))
if
(
!
(
tmp
=
find_field_in_tables
(
thd
,
this
,
tables
,
0
)))
{
/*
We can't find table field in table list of current select,
...
...
@@ -448,9 +448,14 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
sl
&&
!
tmp
;
sl
=
sl
->
outer_select
())
tmp
=
find_field_in_tables
(
thd
,
this
,
(
TABLE_LIST
*
)(
last
=
sl
)
->
table_list
.
first
);
(
TABLE_LIST
*
)(
last
=
sl
)
->
table_list
.
first
,
0
);
if
(
!
tmp
)
return
1
;
{
// Call to produce appropriate error message
find_field_in_tables
(
thd
,
this
,
tables
,
1
);
return
-
1
;
}
else
{
depended_from
=
last
;
...
...
@@ -463,7 +468,7 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
s
=
s
->
outer_select
())
if
(
!
s
->
depended
)
{
s
->
depended
=
1
;
//Select is depended of outer select
s
->
depended
=
1
;
//Tables will be reopened many times
for
(
TABLE_LIST
*
tbl
=
(
TABLE_LIST
*
)
s
->
table_list
.
first
;
...
...
@@ -780,7 +785,7 @@ bool Item_ref::fix_fields(THD *thd,TABLE_LIST *tables, Item **reference)
{
if
(
!
ref
)
{
if
(
!
(
ref
=
find_item_in_list
(
this
,
thd
->
lex
.
select
->
item_list
)))
if
(
!
(
ref
=
find_item_in_list
(
this
,
thd
->
lex
.
select
->
item_list
,
0
)))
{
/*
We can't find table field in table list of current select,
...
...
@@ -795,9 +800,13 @@ bool Item_ref::fix_fields(THD *thd,TABLE_LIST *tables, Item **reference)
for
(
SELECT_LEX
*
sl
=
thd
->
lex
.
select
->
outer_select
();
sl
&&
!
ref
;
sl
=
sl
->
outer_select
())
ref
=
find_item_in_list
(
this
,
(
last
=
sl
)
->
item_list
);
ref
=
find_item_in_list
(
this
,
(
last
=
sl
)
->
item_list
,
0
);
if
(
!
ref
)
{
// Call to report error
find_item_in_list
(
this
,
thd
->
lex
.
select
->
item_list
,
1
);
return
1
;
}
else
{
depended_from
=
last
;
...
...
sql/mysql_priv.h
View file @
2e52a69b
...
...
@@ -451,7 +451,8 @@ bool wait_for_tables(THD *thd);
bool
table_is_used
(
TABLE
*
table
,
bool
wait_for_name_lock
);
bool
drop_locked_tables
(
THD
*
thd
,
const
char
*
db
,
const
char
*
table_name
);
void
abort_locked_tables
(
THD
*
thd
,
const
char
*
db
,
const
char
*
table_name
);
Field
*
find_field_in_tables
(
THD
*
thd
,
Item_field
*
item
,
TABLE_LIST
*
tables
);
Field
*
find_field_in_tables
(
THD
*
thd
,
Item_field
*
item
,
TABLE_LIST
*
tables
,
bool
report_error
);
Field
*
find_field_in_table
(
THD
*
thd
,
TABLE
*
table
,
const
char
*
name
,
uint
length
,
bool
check_grant
,
bool
allow_rowid
);
#ifdef HAVE_OPENSSL
...
...
@@ -539,7 +540,7 @@ TABLE *unlink_open_table(THD *thd,TABLE *list,TABLE *find);
SQL_SELECT
*
make_select
(
TABLE
*
head
,
table_map
const_tables
,
table_map
read_tables
,
COND
*
conds
,
int
*
error
);
Item
**
find_item_in_list
(
Item
*
item
,
List
<
Item
>
&
items
);
Item
**
find_item_in_list
(
Item
*
item
,
List
<
Item
>
&
items
,
bool
report_error
);
bool
insert_fields
(
THD
*
thd
,
TABLE_LIST
*
tables
,
const
char
*
db_name
,
const
char
*
table_name
,
List_iterator
<
Item
>
*
it
);
...
...
sql/sql_base.cc
View file @
2e52a69b
...
...
@@ -1783,7 +1783,8 @@ Field *find_field_in_table(THD *thd,TABLE *table,const char *name,uint length,
Field
*
find_field_in_tables
(
THD
*
thd
,
Item_field
*
item
,
TABLE_LIST
*
tables
)
find_field_in_tables
(
THD
*
thd
,
Item_field
*
item
,
TABLE_LIST
*
tables
,
bool
report_error
)
{
Field
*
found
=
0
;
const
char
*
db
=
item
->
db_name
;
...
...
@@ -1820,7 +1821,7 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
}
if
(
found
)
return
found
;
if
(
!
found_table
)
if
(
!
found_table
&&
report_error
)
{
char
buff
[
NAME_LEN
*
2
+
1
];
if
(
db
)
...
...
@@ -1832,8 +1833,9 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
thd
->
where
);
}
else
my_printf_error
(
ER_BAD_FIELD_ERROR
,
ER
(
ER_BAD_FIELD_ERROR
),
MYF
(
0
),
item
->
full_name
(),
thd
->
where
);
if
(
report_error
)
my_printf_error
(
ER_BAD_FIELD_ERROR
,
ER
(
ER_BAD_FIELD_ERROR
),
MYF
(
0
),
item
->
full_name
(),
thd
->
where
);
return
(
Field
*
)
0
;
}
bool
allow_rowid
=
tables
&&
!
tables
->
next
;
// Only one table
...
...
@@ -1848,7 +1850,7 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
return
(
Field
*
)
0
;
if
(
found
)
{
if
(
!
thd
->
where
)
// Returns first found
if
(
!
report_error
)
// Returns first found
break
;
my_printf_error
(
ER_NON_UNIQ_ERROR
,
ER
(
ER_NON_UNIQ_ERROR
),
MYF
(
0
),
name
,
thd
->
where
);
...
...
@@ -1859,13 +1861,14 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
}
if
(
found
)
return
found
;
my_printf_error
(
ER_BAD_FIELD_ERROR
,
ER
(
ER_BAD_FIELD_ERROR
),
MYF
(
0
),
item
->
full_name
(),
thd
->
where
);
if
(
report_error
)
my_printf_error
(
ER_BAD_FIELD_ERROR
,
ER
(
ER_BAD_FIELD_ERROR
),
MYF
(
0
),
item
->
full_name
(),
thd
->
where
);
return
(
Field
*
)
0
;
}
Item
**
find_item_in_list
(
Item
*
find
,
List
<
Item
>
&
items
)
find_item_in_list
(
Item
*
find
,
List
<
Item
>
&
items
,
bool
report_error
)
{
List_iterator
<
Item
>
li
(
items
);
Item
**
found
=
0
,
*
item
;
...
...
@@ -1890,7 +1893,7 @@ find_item_in_list(Item *find,List<Item> &items)
{
if
((
*
found
)
->
eq
(
item
,
0
))
continue
;
// Same field twice (Access?)
if
(
current_thd
->
where
)
if
(
report_error
)
my_printf_error
(
ER_NON_UNIQ_ERROR
,
ER
(
ER_NON_UNIQ_ERROR
),
MYF
(
0
),
find
->
full_name
(),
current_thd
->
where
);
return
(
Item
**
)
0
;
...
...
@@ -1913,7 +1916,7 @@ find_item_in_list(Item *find,List<Item> &items)
break
;
}
}
if
(
!
found
&&
current_thd
->
where
)
if
(
!
found
&&
report_error
)
my_printf_error
(
ER_BAD_FIELD_ERROR
,
ER
(
ER_BAD_FIELD_ERROR
),
MYF
(
0
),
find
->
full_name
(),
current_thd
->
where
);
return
found
;
...
...
sql/sql_lex.cc
View file @
2e52a69b
...
...
@@ -142,11 +142,11 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
lex
->
next_state
=
STATE_START
;
lex
->
end_of_query
=
(
lex
->
ptr
=
buf
)
+
length
;
lex
->
yylineno
=
1
;
lex
->
select
->
create_refs
=
lex
->
in_comment
=
0
;
lex
->
select
_lex
.
create_refs
=
lex
->
in_comment
=
0
;
lex
->
length
=
0
;
lex
->
select
->
in_sum_expr
=
0
;
lex
->
select
->
expr_list
.
empty
();
lex
->
select
->
ftfunc_list
.
empty
();
lex
->
select
_lex
.
in_sum_expr
=
0
;
lex
->
select
_lex
.
expr_list
.
empty
();
lex
->
select
_lex
.
ftfunc_list
.
empty
();
lex
->
convert_set
=
(
lex
->
thd
=
thd
)
->
variables
.
convert_set
;
lex
->
yacc_yyss
=
lex
->
yacc_yyvs
=
0
;
lex
->
ignore_space
=
test
(
thd
->
sql_mode
&
MODE_IGNORE_SPACE
);
...
...
@@ -158,7 +158,7 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
void
lex_end
(
LEX
*
lex
)
{
lex
->
select
->
expr_list
.
delete_elements
();
// If error when parsing sql-varargs
lex
->
select
_lex
.
expr_list
.
delete_elements
();
// If error when parsing sql-varargs
x_free
(
lex
->
yacc_yyss
);
x_free
(
lex
->
yacc_yyvs
);
}
...
...
sql/sql_parse.cc
View file @
2e52a69b
...
...
@@ -1287,7 +1287,7 @@ mysql_execute_command(THD *thd)
int
res
=
0
;
LEX
*
lex
=
&
thd
->
lex
;
TABLE_LIST
*
tables
=
(
TABLE_LIST
*
)
lex
->
select_lex
.
table_list
.
first
;
SELECT_LEX
*
select_lex
=
lex
->
select
;
SELECT_LEX
*
select_lex
=
&
lex
->
select_lex
;
SELECT_LEX_UNIT
*
unit
=
&
lex
->
unit
;
DBUG_ENTER
(
"mysql_execute_command"
);
...
...
sql/sql_select.cc
View file @
2e52a69b
...
...
@@ -6498,9 +6498,7 @@ find_order_in_list(THD *thd,TABLE_LIST *tables,ORDER *order,List<Item> &fields,
return
0
;
}
const
char
*
save_where
=
thd
->
where
;
thd
->
where
=
0
;
// No error if not found
Item
**
item
=
find_item_in_list
(
*
order
->
item
,
fields
);
thd
->
where
=
save_where
;
Item
**
item
=
find_item_in_list
(
*
order
->
item
,
fields
,
0
);
if
(
item
)
{
order
->
item
=
item
;
// use it
...
...
@@ -6598,17 +6596,15 @@ setup_new_fields(THD *thd,TABLE_LIST *tables,List<Item> &fields,
DBUG_ENTER
(
"setup_new_fields"
);
thd
->
set_query_id
=
1
;
// Not really needed, but...
thd
->
where
=
0
;
// Don't give error
for
(;
new_field
;
new_field
=
new_field
->
next
)
{
if
((
item
=
find_item_in_list
(
*
new_field
->
item
,
fields
)))
if
((
item
=
find_item_in_list
(
*
new_field
->
item
,
fields
,
0
)))
new_field
->
item
=
item
;
/* Change to shared Item */
else
{
thd
->
where
=
"procedure list"
;
if
((
*
new_field
->
item
)
->
fix_fields
(
thd
,
tables
,
new_field
->
item
))
DBUG_RETURN
(
1
);
/* purecov: inspected */
thd
->
where
=
0
;
all_fields
.
push_front
(
*
new_field
->
item
);
new_field
->
item
=
all_fields
.
head_ref
();
}
...
...
@@ -7400,7 +7396,8 @@ static void describe_info(JOIN *join, const char *info)
{
THD
*
thd
=
join
->
thd
;
if
(
thd
->
lex
.
select
->
next_select
())
/* If in UNION */
/* If lex.select belong to UNION */
if
(
thd
->
lex
.
select
->
master_unit
()
->
first_select
()
->
next_select
())
{
select_describe
(
join
,
FALSE
,
FALSE
,
FALSE
,
info
);
return
;
...
...
sql/sql_yacc.yy
View file @
2e52a69b
...
...
@@ -2432,7 +2432,8 @@ order_clause:
net_printf(lex->thd, ER_WRONG_USAGE, "UPDATE", "ORDER BY");
YYABORT;
}
if (lex->select->olap != UNSPECIFIED_OLAP_TYPE)
if (lex->select->linkage != GLOBAL_OPTIONS_TYPE &&
lex->select->olap != UNSPECIFIED_OLAP_TYPE)
{
net_printf(lex->thd, ER_WRONG_USAGE,
"CUBE/ROLLUP",
...
...
@@ -2458,7 +2459,8 @@ limit_clause:
| LIMIT ULONG_NUM
{
LEX *lex=Lex;
if (lex->select->olap != UNSPECIFIED_OLAP_TYPE)
if (lex->select->linkage != GLOBAL_OPTIONS_TYPE &&
lex->select->olap != UNSPECIFIED_OLAP_TYPE)
{
net_printf(lex->thd, ER_WRONG_USAGE, "CUBE/ROLLUP",
"LIMIT");
...
...
@@ -2471,7 +2473,8 @@ limit_clause:
| LIMIT ULONG_NUM ',' ULONG_NUM
{
LEX *lex=Lex;
if (lex->select->olap != UNSPECIFIED_OLAP_TYPE)
if (lex->select->linkage != GLOBAL_OPTIONS_TYPE &&
lex->select->olap != UNSPECIFIED_OLAP_TYPE)
{
net_printf(lex->thd, ER_WRONG_USAGE, "CUBE/ROLLUP",
"LIMIT");
...
...
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