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
d38bd725
Commit
d38bd725
authored
Sep 01, 2004
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
system charset (with wich VIEW printed) saved in .frm and restored before parsing view (BUG#5163)
parent
80a28d45
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
7 deletions
+48
-7
mysql-test/r/view.result
mysql-test/r/view.result
+8
-0
mysql-test/t/view.test
mysql-test/t/view.test
+10
-0
sql/sql_view.cc
sql/sql_view.cc
+29
-7
sql/table.h
sql/table.h
+1
-0
No files found.
mysql-test/r/view.result
View file @
d38bd725
...
...
@@ -1222,3 +1222,11 @@ show create view v1;
Table Create Table
v1 CREATE VIEW `test`.`v1` AS select 99999999999999999999999999999999999999999999999999999 AS `col1`
drop view v1;
create table t (c char);
create view v as select c from t;
insert into v values ('');
select * from v;
c
drop view v;
drop table t;
mysql-test/t/view.test
View file @
d38bd725
...
...
@@ -1168,3 +1168,13 @@ drop table t1;
create
view
v1
as
select
99999999999999999999999999999999999999999999999999999
as
col1
;
show
create
view
v1
;
drop
view
v1
;
#
# VIEWs with national characters
#
create
table
t
(
c
char
);
create
view
v
as
select
c
from
t
;
insert
into
v
values
(
''
);
select
*
from
v
;
drop
view
v
;
drop
table
t
;
sql/sql_view.cc
View file @
d38bd725
...
...
@@ -318,8 +318,10 @@ err:
}
// index of revision number in following table
static
const
int
revision_number_position
=
4
;
/* index of revision number in following table */
static
const
int
revision_number_position
=
5
;
/* index of last required parameter for making view */
static
const
int
last_parameter
=
8
;
static
char
*
view_field_names
[]
=
{
...
...
@@ -327,6 +329,7 @@ static char *view_field_names[]=
(
char
*
)
"md5"
,
(
char
*
)
"updatable"
,
(
char
*
)
"algorithm"
,
(
char
*
)
"syscharset"
,
(
char
*
)
"revision"
,
(
char
*
)
"timestamp"
,
(
char
*
)
"create-version"
,
...
...
@@ -343,13 +346,15 @@ static File_option view_parameters[]=
FILE_OPTIONS_ULONGLONG
},
{{
view_field_names
[
3
],
9
},
offsetof
(
TABLE_LIST
,
algorithm
),
FILE_OPTIONS_ULONGLONG
},
{{
view_field_names
[
4
],
8
},
offsetof
(
TABLE_LIST
,
revision
),
{{
view_field_names
[
4
],
10
},
offsetof
(
TABLE_LIST
,
syscharset
),
FILE_OPTIONS_STRING
},
{{
view_field_names
[
5
],
8
},
offsetof
(
TABLE_LIST
,
revision
),
FILE_OPTIONS_REV
},
{{
view_field_names
[
5
],
9
},
offsetof
(
TABLE_LIST
,
timestamp
),
{{
view_field_names
[
6
],
9
},
offsetof
(
TABLE_LIST
,
timestamp
),
FILE_OPTIONS_TIMESTAMP
},
{{
view_field_names
[
6
],
14
},
offsetof
(
TABLE_LIST
,
file_version
),
{{
view_field_names
[
7
],
14
},
offsetof
(
TABLE_LIST
,
file_version
),
FILE_OPTIONS_ULONGLONG
},
{{
view_field_names
[
7
],
6
},
offsetof
(
TABLE_LIST
,
source
),
{{
view_field_names
[
8
],
6
},
offsetof
(
TABLE_LIST
,
source
),
FILE_OPTIONS_ESTRING
},
{{
NULL
,
0
},
0
,
FILE_OPTIONS_STRING
}
...
...
@@ -468,6 +473,8 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view,
view
->
query
.
length
=
str
.
length
()
-
1
;
// we do not need last \0
view
->
source
.
str
=
thd
->
query
;
view
->
source
.
length
=
thd
->
query_length
;
view
->
syscharset
.
str
=
(
char
*
)
system_charset_info
->
csname
;
view
->
syscharset
.
length
=
strlen
(
view
->
syscharset
.
str
);
view
->
file_version
=
1
;
view
->
calc_md5
(
md5
);
view
->
md5
.
str
=
md5
;
...
...
@@ -552,7 +559,8 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table)
TODO: when VIEWs will be stored in cache, table mem_root should
be used here
*/
if
(
parser
->
parse
((
gptr
)
table
,
&
thd
->
mem_root
,
view_parameters
,
6
))
if
(
parser
->
parse
((
gptr
)
table
,
&
thd
->
mem_root
,
view_parameters
,
last_parameter
))
goto
err
;
/*
...
...
@@ -604,7 +612,21 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table)
*/
thd
->
options
&=
~
(
MODE_PIPES_AS_CONCAT
|
MODE_ANSI_QUOTES
|
MODE_IGNORE_SPACE
|
MODE_NO_BACKSLASH_ESCAPES
);
CHARSET_INFO
*
save_cs
=
thd
->
variables
.
character_set_client
;
if
(
!
table
->
syscharset
.
length
)
thd
->
variables
.
character_set_client
=
system_charset_info
;
else
{
if
(
!
(
thd
->
variables
.
character_set_client
=
get_charset_by_csname
(
table
->
syscharset
.
str
,
MY_CS_PRIMARY
,
MYF
(
MY_WME
))))
{
thd
->
variables
.
character_set_client
=
save_cs
;
goto
err
;
}
}
res
=
yyparse
((
void
*
)
thd
);
thd
->
variables
.
character_set_client
=
save_cs
;
thd
->
options
=
options
;
}
if
(
!
res
&&
!
thd
->
is_fatal_error
)
...
...
sql/table.h
View file @
d38bd725
...
...
@@ -224,6 +224,7 @@ typedef struct st_table_list
LEX_STRING
view_db
;
/* save view database */
LEX_STRING
view_name
;
/* save view name */
LEX_STRING
timestamp
;
/* GMT time stamp of last operation */
LEX_STRING
syscharset
;
/* charset of VIEW query text*/
ulonglong
file_version
;
/* version of file's field set */
ulonglong
updatable_view
;
/* VIEW can be updated */
ulonglong
revision
;
/* revision control number */
...
...
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