summaryrefslogtreecommitdiff
path: root/sql/sql_view.cc
diff options
context:
space:
mode:
authorunknown <anozdrin@mysql.com>2006-03-07 14:28:09 +0300
committerunknown <anozdrin@mysql.com>2006-03-07 14:28:09 +0300
commitaddf22382f49b0e0f1ab305ab7fb31bb7227839e (patch)
treef377d746ddd3a559f6c8a1d2237fbeb30cd08efa /sql/sql_view.cc
parent99f4e54b5a44544689af2876035595c390431628 (diff)
parenta36ac47ec8c7a61a67875ebf7687fa7bde64a365 (diff)
downloadmariadb-git-addf22382f49b0e0f1ab305ab7fb31bb7227839e.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/alik/Documents/AllProgs/MySQL/devel/5.0-rt mysql-test/r/sp.result: Auto merged sql/sql_trigger.cc: Auto merged sql/sql_yacc.yy: Auto merged mysql-test/r/skip_grants.result: Merge 5.0 and 5.0-runtime. mysql-test/t/skip_grants.test: Merge 5.0 and 5.0-runtime.
Diffstat (limited to 'sql/sql_view.cc')
-rw-r--r--sql/sql_view.cc23
1 files changed, 21 insertions, 2 deletions
diff --git a/sql/sql_view.cc b/sql/sql_view.cc
index 4f62a80cfd4..4f2a9a07705 100644
--- a/sql/sql_view.cc
+++ b/sql/sql_view.cc
@@ -208,6 +208,26 @@ bool mysql_create_view(THD *thd,
if (mode != VIEW_CREATE_NEW)
sp_cache_invalidate();
+ if (!lex->definer)
+ {
+ /*
+ DEFINER-clause is missing; we have to create default definer in
+ persistent arena to be PS/SP friendly.
+ */
+
+ Query_arena original_arena;
+ Query_arena *ps_arena = thd->activate_stmt_arena_if_needed(&original_arena);
+
+ if (!(lex->definer= create_default_definer(thd)))
+ res= TRUE;
+
+ if (ps_arena)
+ thd->restore_active_arena(ps_arena, &original_arena);
+
+ if (res)
+ goto err;
+ }
+
#ifndef NO_EMBEDDED_ACCESS_CHECKS
/*
check definer of view:
@@ -815,8 +835,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table)
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_VIEW_FRM_NO_USER, ER(ER_VIEW_FRM_NO_USER),
table->db, table->table_name);
- if (get_default_definer(thd, &table->definer))
- goto err;
+ get_default_definer(thd, &table->definer);
}
/*