diff options
author | unknown <bell@sanja.is.com.ua> | 2002-11-23 18:54:15 +0200 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2002-11-23 18:54:15 +0200 |
commit | b7bcb96508604ca639103279d0de749bc6f4afa9 (patch) | |
tree | a12d11ffdefa56f09b8d7a60068f7153df41beb6 /sql | |
parent | 671ed6ac8bd180a10e6129890261c4cdb5c36858 (diff) | |
download | mariadb-git-b7bcb96508604ca639103279d0de749bc6f4afa9.tar.gz |
lock option in table list
sql/sql_lex.cc:
note about methods location
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_lex.cc | 5 | ||||
-rw-r--r-- | sql/sql_parse.cc | 24 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 13 |
3 files changed, 14 insertions, 28 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 9ed66aede6f..286cec87424 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1282,4 +1282,7 @@ List<String>* st_select_lex::get_ignore_index() return ignore_index_ptr; } -// There are st_select_lex::add_table_to_list in sql_parse.cc +/* + There are st_select_lex::add_table_to_list & + st_select_lex::set_lock_for_tables in sql_parse.cc +*/ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 263ac50120d..9199b496dac 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1426,20 +1426,7 @@ mysql_execute_command(THD *thd) { if (!result) { - if ((result=new select_send())) - { - /* - Normal select: - Change lock if we are using SELECT HIGH PRIORITY, - FOR UPDATE or IN SHARE MODE - - TODO: Delete the following loop when locks is set by sql_yacc - */ - TABLE_LIST *table; - for (table = tables ; table ; table=table->next) - table->lock_type= lex->lock_option; - } - else + if (!(result=new select_send())) { res= -1; #ifdef DELETE_ITEMS @@ -1663,9 +1650,6 @@ mysql_execute_command(THD *thd) TABLE_LIST *table; if (check_table_access(thd, SELECT_ACL, tables->next)) goto error; // Error message is given - /* TODO: Delete the following loop when locks is set by sql_yacc */ - for (table = tables->next ; table ; table=table->next) - table->lock_type= lex->lock_option; } unit->offset_limit_cnt= select_lex->offset_limit; unit->select_limit_cnt= select_lex->select_limit+ @@ -2023,12 +2007,6 @@ mysql_execute_command(THD *thd) net_printf(thd,ER_INSERT_TABLE_USED,tables->real_name); DBUG_VOID_RETURN; } - { - /* TODO: Delete the following loop when locks is set by sql_yacc */ - TABLE_LIST *table; - for (table = tables->next ; table ; table=table->next) - table->lock_type= lex->lock_option; - } /* Skip first table, which is the table we are inserting in */ lex->select_lex.table_list.first= diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index eaae24d0310..f2c8869b1af 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -798,7 +798,10 @@ create: ($2 & HA_LEX_CREATE_TMP_TABLE ? &tmp_table_alias : - (LEX_STRING*) 0),1)) + (LEX_STRING*) 0),1, + ((using_update_log)? + TL_READ_NO_INSERT: + TL_READ))) YYABORT; lex->create_list.empty(); lex->key_list.empty(); @@ -2374,8 +2377,9 @@ join_table: } table_ident opt_table_alias opt_key_definition { - SELECT_LEX_NODE *sel=Select; - if (!($$= sel->add_table_to_list($2, $3, 0, TL_UNLOCK, + LEX *lex= Lex; + SELECT_LEX_NODE *sel= lex->current_select; + if (!($$= sel->add_table_to_list($2, $3, 0, lex->lock_option, sel->get_use_index(), sel->get_ignore_index()))) YYABORT; @@ -2388,7 +2392,8 @@ join_table: SELECT_LEX_UNIT *unit= lex->current_select->master_unit(); lex->current_select= unit->outer_select(); if (!($$= lex->current_select-> - add_table_to_list(new Table_ident(unit), $5, 0, TL_UNLOCK))) + add_table_to_list(new Table_ident(unit), $5, 0, + lex->lock_option))) YYABORT; }; |