Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
0345f584
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0345f584
编写于
7月 25, 2002
作者:
T
Tatsuo Ishii
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement DROP CONVERSION
Add regression test
上级
8d600a7d
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
852 addition
and
104 deletion
+852
-104
src/backend/catalog/dependency.c
src/backend/catalog/dependency.c
+29
-1
src/backend/catalog/pg_conversion.c
src/backend/catalog/pg_conversion.c
+114
-7
src/backend/commands/conversioncmds.c
src/backend/commands/conversioncmds.c
+3
-3
src/backend/tcop/utility.c
src/backend/tcop/utility.c
+2
-3
src/backend/utils/cache/syscache.c
src/backend/utils/cache/syscache.c
+21
-1
src/backend/utils/init/miscinit.c
src/backend/utils/init/miscinit.c
+1
-51
src/backend/utils/mb/mbutils.c
src/backend/utils/mb/mbutils.c
+10
-3
src/include/catalog/catversion.h
src/include/catalog/catversion.h
+2
-2
src/include/catalog/indexing.h
src/include/catalog/indexing.h
+2
-3
src/include/catalog/pg_conversion.h
src/include/catalog/pg_conversion.h
+5
-2
src/include/commands/conversioncmds.h
src/include/commands/conversioncmds.h
+2
-2
src/include/utils/syscache.h
src/include/utils/syscache.h
+24
-22
src/test/regress/expected/conversion.out
src/test/regress/expected/conversion.out
+478
-0
src/test/regress/parallel_schedule
src/test/regress/parallel_schedule
+1
-3
src/test/regress/serial_schedule
src/test/regress/serial_schedule
+2
-1
src/test/regress/sql/conversion.sql
src/test/regress/sql/conversion.sql
+156
-0
未找到文件。
src/backend/catalog/dependency.c
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.
5 2002/07/18 23:11:27 petere
Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.
6 2002/07/25 10:07:10 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -23,6 +23,7 @@
#include "catalog/indexing.h"
#include "catalog/pg_attrdef.h"
#include "catalog/pg_constraint.h"
#include "catalog/pg_conversion.h"
#include "catalog/pg_depend.h"
#include "catalog/pg_language.h"
#include "catalog/pg_namespace.h"
...
...
@@ -52,6 +53,7 @@ typedef enum ObjectClasses
OCLASS_PROC
,
/* pg_proc */
OCLASS_TYPE
,
/* pg_type */
OCLASS_CONSTRAINT
,
/* pg_constraint */
OCLASS_CONVERSION
,
/* pg_conversion */
OCLASS_DEFAULT
,
/* pg_attrdef */
OCLASS_LANGUAGE
,
/* pg_language */
OCLASS_OPERATOR
,
/* pg_operator */
...
...
@@ -581,6 +583,10 @@ doDeletion(const ObjectAddress *object)
RemoveConstraintById
(
object
->
objectId
);
break
;
case
OCLASS_CONVERSION
:
RemoveConversionById
(
object
->
objectId
);
break
;
case
OCLASS_DEFAULT
:
RemoveAttrDefaultById
(
object
->
objectId
);
break
;
...
...
@@ -989,6 +995,7 @@ init_object_classes(void)
object_classes
[
OCLASS_PROC
]
=
RelOid_pg_proc
;
object_classes
[
OCLASS_TYPE
]
=
RelOid_pg_type
;
object_classes
[
OCLASS_CONSTRAINT
]
=
get_system_catalog_relid
(
ConstraintRelationName
);
object_classes
[
OCLASS_CONVERSION
]
=
get_system_catalog_relid
(
ConversionRelationName
);
object_classes
[
OCLASS_DEFAULT
]
=
get_system_catalog_relid
(
AttrDefaultRelationName
);
object_classes
[
OCLASS_LANGUAGE
]
=
get_system_catalog_relid
(
LanguageRelationName
);
object_classes
[
OCLASS_OPERATOR
]
=
get_system_catalog_relid
(
OperatorRelationName
);
...
...
@@ -1039,6 +1046,11 @@ getObjectClass(const ObjectAddress *object)
Assert
(
object
->
objectSubId
==
0
);
return
OCLASS_CONSTRAINT
;
}
if
(
object
->
classId
==
object_classes
[
OCLASS_CONVERSION
])
{
Assert
(
object
->
objectSubId
==
0
);
return
OCLASS_CONVERSION
;
}
if
(
object
->
classId
==
object_classes
[
OCLASS_DEFAULT
])
{
Assert
(
object
->
objectSubId
==
0
);
...
...
@@ -1165,6 +1177,22 @@ getObjectDescription(const ObjectAddress *object)
break
;
}
case
OCLASS_CONVERSION
:
{
HeapTuple
conTup
;
conTup
=
SearchSysCache
(
CONOID
,
ObjectIdGetDatum
(
object
->
objectId
),
0
,
0
,
0
);
if
(
!
HeapTupleIsValid
(
conTup
))
elog
(
ERROR
,
"getObjectDescription: Conversion %u does not exist"
,
object
->
objectId
);
appendStringInfo
(
&
buffer
,
"conversion %s"
,
NameStr
(((
Form_pg_conversion
)
GETSTRUCT
(
conTup
))
->
conname
));
ReleaseSysCache
(
conTup
);
break
;
}
case
OCLASS_DEFAULT
:
{
Relation
attrdefDesc
;
...
...
src/backend/catalog/pg_conversion.c
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_conversion.c,v 1.
2 2002/07/16 06:58:44
ishii Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_conversion.c,v 1.
3 2002/07/25 10:07:10
ishii Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -16,11 +16,15 @@
#include "access/heapam.h"
#include "catalog/catname.h"
#include "catalog/dependency.h"
#include "catalog/indexing.h"
#include "catalog/pg_class.h"
#include "catalog/pg_conversion.h"
#include "catalog/namespace.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
#include "utils/catcache.h"
#include "mb/pg_wchar.h"
#include "utils/fmgroids.h"
#include "utils/acl.h"
...
...
@@ -28,6 +32,8 @@
/* ----------------
* ConversionCreate
*
* Add a new tuple to pg_coversion.
* ---------------
*/
Oid
ConversionCreate
(
const
char
*
conname
,
Oid
connamespace
,
...
...
@@ -43,6 +49,8 @@ Oid ConversionCreate(const char *conname, Oid connamespace,
Datum
values
[
Natts_pg_conversion
];
NameData
cname
;
Oid
oid
;
ObjectAddress
myself
,
referenced
;
/* sanity checks */
if
(
!
conname
)
...
...
@@ -85,7 +93,10 @@ Oid ConversionCreate(const char *conname, Oid connamespace,
values
[
Anum_pg_conversion_conforencoding
-
1
]
=
Int32GetDatum
(
conforencoding
);
values
[
Anum_pg_conversion_contoencoding
-
1
]
=
Int32GetDatum
(
contoencoding
);
values
[
Anum_pg_conversion_conproc
-
1
]
=
ObjectIdGetDatum
(
conproc
);
values
[
Anum_pg_conversion_condefault
-
1
]
=
BoolGetDatum
(
def
);
if
(
def
==
true
)
values
[
Anum_pg_conversion_condefault
-
1
]
=
BoolGetDatum
(
def
);
else
nulls
[
Anum_pg_conversion_condefault
-
1
]
=
'n'
;
tup
=
heap_formtuple
(
tupDesc
,
values
,
nulls
);
...
...
@@ -103,6 +114,17 @@ Oid ConversionCreate(const char *conname, Oid connamespace,
CatalogCloseIndices
(
Num_pg_conversion_indices
,
idescs
);
}
myself
.
classId
=
get_system_catalog_relid
(
ConversionRelationName
);
myself
.
objectId
=
HeapTupleGetOid
(
tup
);
myself
.
objectSubId
=
0
;
/* dependency on conversion procedure */
referenced
.
classId
=
RelOid_pg_proc
;
referenced
.
objectId
=
conproc
;
referenced
.
objectSubId
=
0
;
recordDependencyOn
(
&
myself
,
&
referenced
,
DEPENDENCY_NORMAL
);
heap_freetuple
(
tup
);
heap_close
(
rel
,
RowExclusiveLock
);
return
oid
;
...
...
@@ -110,9 +132,12 @@ Oid ConversionCreate(const char *conname, Oid connamespace,
/* ----------------
* ConversionDrop
*
* Drop a conversion and do dependency check.
* ---------------
*/
void
ConversionDrop
(
const
char
*
conname
,
Oid
connamespace
,
int32
conowner
)
void
ConversionDrop
(
const
char
*
conname
,
Oid
connamespace
,
int32
conowner
,
DropBehavior
behavior
)
{
Relation
rel
;
TupleDesc
tupDesc
;
...
...
@@ -120,6 +145,8 @@ void ConversionDrop(const char *conname, Oid connamespace, int32 conowner)
HeapScanDesc
scan
;
ScanKeyData
scanKeyData
;
Form_pg_conversion
body
;
ObjectAddress
object
;
Oid
myoid
;
/* sanity checks */
if
(
!
conname
)
...
...
@@ -132,7 +159,7 @@ void ConversionDrop(const char *conname, Oid connamespace, int32 conowner)
ObjectIdGetDatum
(
connamespace
));
/* open pg_conversion */
rel
=
heap_openr
(
ConversionRelationName
,
RowExclusiv
eLock
);
rel
=
heap_openr
(
ConversionRelationName
,
AccessShar
eLock
);
tupDesc
=
rel
->
rd_att
;
scan
=
heap_beginscan
(
rel
,
SnapshotNow
,
...
...
@@ -155,8 +182,53 @@ void ConversionDrop(const char *conname, Oid connamespace, int32 conowner)
if
(
!
superuser
()
&&
((
Form_pg_conversion
)
GETSTRUCT
(
tuple
))
->
conowner
!=
GetUserId
())
elog
(
ERROR
,
"permission denied"
);
simple_heap_delete
(
rel
,
&
tuple
->
t_self
);
myoid
=
HeapTupleGetOid
(
tuple
);
heap_endscan
(
scan
);
heap_close
(
rel
,
AccessShareLock
);
/*
* Do the deletion
*/
object
.
classId
=
get_system_catalog_relid
(
ConversionRelationName
);
object
.
objectId
=
myoid
;
object
.
objectSubId
=
0
;
performDeletion
(
&
object
,
behavior
);
}
/* ----------------
* RemoveConversionById
*
* Remove a tuple from pg_conversion by Oid. This function is soley
* called inside catalog/dependency.c
* --------------- */
void
RemoveConversionById
(
Oid
conversionOid
)
{
Relation
rel
;
TupleDesc
tupDesc
;
HeapTuple
tuple
;
HeapScanDesc
scan
;
ScanKeyData
scanKeyData
;
ScanKeyEntryInitialize
(
&
scanKeyData
,
0
,
ObjectIdAttributeNumber
,
F_OIDEQ
,
ObjectIdGetDatum
(
conversionOid
));
/* open pg_conversion */
rel
=
heap_openr
(
ConversionRelationName
,
RowExclusiveLock
);
tupDesc
=
rel
->
rd_att
;
scan
=
heap_beginscan
(
rel
,
SnapshotNow
,
1
,
&
scanKeyData
);
/* search for the target tuple */
if
(
HeapTupleIsValid
(
tuple
=
heap_getnext
(
scan
,
ForwardScanDirection
)))
simple_heap_delete
(
rel
,
&
tuple
->
t_self
);
else
elog
(
ERROR
,
"Conversion %u does not exist"
,
conversionOid
);
heap_endscan
(
scan
);
heap_close
(
rel
,
RowExclusiveLock
);
}
...
...
@@ -164,9 +236,11 @@ void ConversionDrop(const char *conname, Oid connamespace, int32 conowner)
/* ----------------
* FindDefaultConversion
*
* find default conversion proc by for_encoding and to_encoding in this name space
* Find "default" conversion proc by for_encoding and to_encoding in this name space.
* If found, returns the procedure's oid, otherwise InvalidOid.
* ---------------
*/
#ifdef NOT_USED
Oid
FindDefaultConversion
(
Oid
name_space
,
int4
for_encoding
,
int4
to_encoding
)
{
Relation
rel
;
...
...
@@ -205,11 +279,44 @@ Oid FindDefaultConversion(Oid name_space, int4 for_encoding, int4 to_encoding)
heap_close
(
rel
,
AccessShareLock
);
return
proc
;
}
#endif
Oid
FindDefaultConversion
(
Oid
name_space
,
int4
for_encoding
,
int4
to_encoding
)
{
CatCList
*
catlist
;
HeapTuple
tuple
;
Form_pg_conversion
body
;
Oid
proc
=
InvalidOid
;
int
i
;
/* Check we have usage rights in target namespace */
if
(
pg_namespace_aclcheck
(
name_space
,
GetUserId
(),
ACL_USAGE
)
!=
ACLCHECK_OK
)
return
proc
;
catlist
=
SearchSysCacheList
(
CONDEFAULT
,
3
,
ObjectIdGetDatum
(
name_space
),
Int32GetDatum
(
for_encoding
),
Int32GetDatum
(
to_encoding
),
0
);
for
(
i
=
0
;
i
<
catlist
->
n_members
;
i
++
)
{
tuple
=
&
catlist
->
members
[
i
]
->
tuple
;
body
=
(
Form_pg_conversion
)
GETSTRUCT
(
tuple
);
if
(
body
->
condefault
==
TRUE
)
{
proc
=
body
->
conproc
;
break
;
}
}
ReleaseSysCacheList
(
catlist
);
return
proc
;
}
/* ----------------
* FindConversionByName
*
*
f
ind conversion proc by possibly qualified conversion name.
*
F
ind conversion proc by possibly qualified conversion name.
* ---------------
*/
Oid
FindConversionByName
(
List
*
name
)
...
...
src/backend/commands/conversioncmds.c
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.
1 2002/07/11 07:39:27
ishii Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.
2 2002/07/25 10:07:11
ishii Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -90,7 +90,7 @@ CreateConversionCommand(CreateConversionStmt *stmt)
* DROP CONVERSION
*/
void
DropConversionCommand
(
List
*
name
)
DropConversionCommand
(
List
*
name
,
DropBehavior
behavior
)
{
Oid
namespaceId
;
char
*
conversion_name
;
...
...
@@ -108,5 +108,5 @@ DropConversionCommand(List *name)
* none existing conversion
* not ower of this conversion
*/
ConversionDrop
(
conversion_name
,
namespaceId
,
GetUserId
());
ConversionDrop
(
conversion_name
,
namespaceId
,
GetUserId
()
,
behavior
);
}
src/backend/tcop/utility.c
浏览文件 @
0345f584
...
...
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.16
4 2002/07/18 23:11:28 petere
Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.16
5 2002/07/25 10:07:11 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -318,8 +318,7 @@ ProcessUtility(Node *parsetree,
break
;
case
DROP_CONVERSION
:
/* does its own permissions checks */
DropConversionCommand
(
names
);
DropConversionCommand
(
names
,
stmt
->
behavior
);
break
;
case
DROP_SCHEMA
:
...
...
src/backend/utils/cache/syscache.c
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.8
3 2002/07/20 05:16:58 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.8
4 2002/07/25 10:07:12 ishii
Exp $
*
* NOTES
* These routines allow the parser/planner/executor to perform
...
...
@@ -206,6 +206,16 @@ static const struct cachedesc cacheinfo[] = {
0
,
0
}},
{
ConversionRelationName
,
/* CONDEFAULT */
ConversionDefaultIndex
,
0
,
4
,
{
Anum_pg_conversion_connamespace
,
Anum_pg_conversion_conforencoding
,
Anum_pg_conversion_contoencoding
,
ObjectIdAttributeNumber
,
}},
{
ConversionRelationName
,
/* CONNAMENSP */
ConversionNameNspIndex
,
0
,
...
...
@@ -216,6 +226,16 @@ static const struct cachedesc cacheinfo[] = {
0
,
0
}},
{
ConversionRelationName
,
/* CONOID */
ConversionOidIndex
,
0
,
1
,
{
ObjectIdAttributeNumber
,
0
,
0
,
0
}},
{
GroupRelationName
,
/* GRONAME */
GroupNameIndex
,
0
,
...
...
src/backend/utils/init/miscinit.c
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.9
3 2002/06/20 20:29:40 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.9
4 2002/07/25 10:07:12 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -185,56 +185,6 @@ SetDataDir(const char *dir)
DataDir
=
new
;
}
/* ----------------------------------------------------------------
* MULTIBYTE stub code
*
* Even if MULTIBYTE is not enabled, these functions are necessary
* since pg_proc.h has references to them.
* ----------------------------------------------------------------
*/
#ifndef MULTIBYTE
Datum
getdatabaseencoding
(
PG_FUNCTION_ARGS
)
{
return
DirectFunctionCall1
(
namein
,
CStringGetDatum
(
"SQL_ASCII"
));
}
Datum
pg_client_encoding
(
PG_FUNCTION_ARGS
)
{
return
DirectFunctionCall1
(
namein
,
CStringGetDatum
(
"SQL_ASCII"
));
}
Datum
PG_encoding_to_char
(
PG_FUNCTION_ARGS
)
{
return
DirectFunctionCall1
(
namein
,
CStringGetDatum
(
"SQL_ASCII"
));
}
Datum
PG_char_to_encoding
(
PG_FUNCTION_ARGS
)
{
PG_RETURN_INT32
(
0
);
}
Datum
pg_convert
(
PG_FUNCTION_ARGS
)
{
elog
(
ERROR
,
"convert is not supported. To use convert, you need to enable multibyte capability"
);
return
DirectFunctionCall1
(
textin
,
CStringGetDatum
(
""
));
}
Datum
pg_convert2
(
PG_FUNCTION_ARGS
)
{
elog
(
ERROR
,
"convert is not supported. To use convert, you need to enable multibyte capability"
);
return
DirectFunctionCall1
(
textin
,
CStringGetDatum
(
""
));
}
#endif
/* ----------------------------------------------------------------
* CYR_RECODE support
* ----------------------------------------------------------------
...
...
src/backend/utils/mb/mbutils.c
浏览文件 @
0345f584
...
...
@@ -3,10 +3,10 @@
* client encoding and server internal encoding.
* (currently mule internal code (mic) is used)
* Tatsuo Ishii
* $Id: mbutils.c,v 1.2
8 2002/07/18 02:02:30
ishii Exp $
* $Id: mbutils.c,v 1.2
9 2002/07/25 10:07:12
ishii Exp $
*/
#include "postgres.h"
#include "access/xact.h"
#include "miscadmin.h"
#include "mb/pg_wchar.h"
#include "utils/builtins.h"
...
...
@@ -35,7 +35,8 @@ SetClientEncoding(int encoding, bool doit)
if
(
!
PG_VALID_FE_ENCODING
(
encoding
))
return
(
-
1
);
if
(
current_server_encoding
==
encoding
)
if
(
current_server_encoding
==
encoding
||
(
current_server_encoding
==
PG_SQL_ASCII
||
encoding
==
PG_SQL_ASCII
))
{
ClientEncoding
=
&
pg_enc2name_tbl
[
encoding
];
return
0
;
...
...
@@ -102,9 +103,15 @@ pg_do_encoding_conversion(unsigned char *src, int len,
unsigned
char
*
result
;
Oid
proc
;
if
(
!
IsTransactionState
())
return
src
;
if
(
src_encoding
==
dest_encoding
)
return
src
;
if
(
src_encoding
==
PG_SQL_ASCII
||
dest_encoding
==
PG_SQL_ASCII
)
return
src
;
proc
=
FindDefaultConversionProc
(
src_encoding
,
dest_encoding
);
if
(
!
OidIsValid
(
proc
))
{
...
...
src/include/catalog/catversion.h
浏览文件 @
0345f584
...
...
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: catversion.h,v 1.14
2 2002/07/24 19:11:12 petere
Exp $
* $Id: catversion.h,v 1.14
3 2002/07/25 10:07:12 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 2002072
4
1
#define CATALOG_VERSION_NO 2002072
5
1
#endif
src/include/catalog/indexing.h
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: indexing.h,v 1.7
2 2002/07/22 20:23:19 petere
Exp $
* $Id: indexing.h,v 1.7
3 2002/07/25 10:07:12 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -179,8 +179,7 @@ DECLARE_INDEX(pg_constraint_conname_nsp_index on pg_constraint using btree(conna
/* This following index is not used for a cache and is not unique */
DECLARE_INDEX
(
pg_constraint_conrelid_index
on
pg_constraint
using
btree
(
conrelid
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_constraint_oid_index
on
pg_constraint
using
btree
(
oid
oid_ops
));
/* This following index is not used for a cache and is not unique */
DECLARE_INDEX
(
pg_conversion_default_index
on
pg_conversion
using
btree
(
connamespace
oid_ops
,
conforencoding
int4_ops
,
contoencoding
int4_ops
));
DECLARE_UNIQUE_INDEX
(
pg_conversion_default_index
on
pg_conversion
using
btree
(
connamespace
oid_ops
,
conforencoding
int4_ops
,
contoencoding
int4_ops
,
oid
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_conversion_name_nsp_index
on
pg_conversion
using
btree
(
conname
name_ops
,
connamespace
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_conversion_oid_index
on
pg_conversion
using
btree
(
oid
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_database_datname_index
on
pg_database
using
btree
(
datname
name_ops
));
...
...
src/include/catalog/pg_conversion.h
浏览文件 @
0345f584
...
...
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_conversion.h,v 1.
1 2002/07/11 07:39:27
ishii Exp $
* $Id: pg_conversion.h,v 1.
2 2002/07/25 10:07:13
ishii Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
...
...
@@ -81,12 +81,15 @@ typedef FormData_pg_conversion *Form_pg_conversion;
* prototypes for functions in pg_conversion.c
*/
#include "nodes/pg_list.h"
#include "nodes/parsenodes.h"
extern
Oid
ConversionCreate
(
const
char
*
conname
,
Oid
connamespace
,
int32
conowner
,
int4
conforencoding
,
int4
contoencoding
,
Oid
conproc
,
bool
def
);
extern
void
ConversionDrop
(
const
char
*
conname
,
Oid
connamespace
,
int32
conowner
);
extern
void
ConversionDrop
(
const
char
*
conname
,
Oid
connamespace
,
int32
conowner
,
DropBehavior
behavior
);
extern
void
RemoveConversionById
(
Oid
conversionOid
);
extern
Oid
FindDefaultConversion
(
Oid
name_space
,
int4
for_encoding
,
int4
to_encoding
);
extern
Oid
FindConversionByName
(
List
*
conname
);
...
...
src/include/commands/conversioncmds.h
浏览文件 @
0345f584
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: conversioncmds.h,v 1.
1 2002/07/11 07:39:27
ishii Exp $
* $Id: conversioncmds.h,v 1.
2 2002/07/25 10:07:13
ishii Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -18,6 +18,6 @@
#include "nodes/parsenodes.h"
extern
void
CreateConversionCommand
(
CreateConversionStmt
*
parsetree
);
extern
void
DropConversionCommand
(
List
*
conversion_name
);
extern
void
DropConversionCommand
(
List
*
conversion_name
,
DropBehavior
behavior
);
#endif
/* CONVERSIONCMDS_H */
src/include/utils/syscache.h
浏览文件 @
0345f584
...
...
@@ -9,7 +9,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: syscache.h,v 1.5
0 2002/07/18 23:11:32 petere
Exp $
* $Id: syscache.h,v 1.5
1 2002/07/25 10:07:13 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -39,27 +39,29 @@
#define CASTSOURCETARGET 8
#define CLAAMNAMENSP 9
#define CLAOID 10
#define CONNAMESP 11
#define GRONAME 12
#define GROSYSID 13
#define INDEXRELID 14
#define INHRELID 15
#define LANGNAME 16
#define LANGOID 17
#define NAMESPACENAME 18
#define NAMESPACEOID 19
#define OPERNAMENSP 20
#define OPEROID 21
#define PROCNAMENSP 22
#define PROCOID 23
#define RELNAMENSP 24
#define RELOID 25
#define RULERELNAME 26
#define SHADOWNAME 27
#define SHADOWSYSID 28
#define STATRELATT 29
#define TYPENAMENSP 30
#define TYPEOID 31
#define CONDEFAULT 11
#define CONNAMESP 12
#define CONOID 13
#define GRONAME 14
#define GROSYSID 15
#define INDEXRELID 16
#define INHRELID 17
#define LANGNAME 18
#define LANGOID 19
#define NAMESPACENAME 20
#define NAMESPACEOID 21
#define OPERNAMENSP 22
#define OPEROID 23
#define PROCNAMENSP 24
#define PROCOID 25
#define RELNAMENSP 26
#define RELOID 27
#define RULERELNAME 28
#define SHADOWNAME 29
#define SHADOWSYSID 30
#define STATRELATT 31
#define TYPENAMENSP 32
#define TYPEOID 33
extern
void
InitCatalogCache
(
void
);
extern
void
InitCatalogCachePhase2
(
void
);
...
...
src/test/regress/expected/conversion.out
0 → 100644
浏览文件 @
0345f584
--
-- create user defined conversion
--
CREATE USER foo WITH NOCREATEDB NOCREATEUSER;
SET SESSION AUTHORIZATION foo;
CREATE CONVERSION myconv FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
--
-- cannot make same name conversion in same schema
--
CREATE CONVERSION myconv FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
ERROR: conversion name "myconv" already exists
--
-- create default conversion with qualified name
--
CREATE DEFAULT CONVERSION public.mydef FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
--
-- cannot make default conversion with same shcema/for_encoding/to_encoding
--
CREATE DEFAULT CONVERSION public.mydef2 FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
ERROR: default conversion for LATIN1 to UNICODE already exists
--
-- drop user defined conversion
--
DROP CONVERSION myconv;
DROP CONVERSION mydef;
--
-- make sure all pre-defined conversions are fine.
--
-- UNICODE -> SQL_ASCII
SELECT CONVERT('foo', 'UNICODE', 'SQL_ASCII');
convert
---------
foo
(1 row)
-- SQL_ASCII -> UNICODE
SELECT CONVERT('foo', 'SQL_ASCII', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN1
SELECT CONVERT('foo', 'UNICODE', 'LATIN1');
convert
---------
foo
(1 row)
-- LATIN1 -> UNICODE
SELECT CONVERT('foo', 'LATIN1', 'UNICODE');
convert
---------
foo
(1 row)
-- EUC_JP -> UNICODE
SELECT CONVERT('foo', 'EUC_JP', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> EUC_JP
SELECT CONVERT('foo', 'UNICODE', 'EUC_JP');
convert
---------
foo
(1 row)
-- EUC_KR -> UNICODE
SELECT CONVERT('foo', 'EUC_KR', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> EUC_KR
SELECT CONVERT('foo', 'UNICODE', 'EUC_KR');
convert
---------
foo
(1 row)
-- EUC_CN -> UNICODE
SELECT CONVERT('foo', 'EUC_CN', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> EUC_CN
SELECT CONVERT('foo', 'UNICODE', 'EUC_CN');
convert
---------
foo
(1 row)
-- EUC_TW -> UNICODE
SELECT CONVERT('foo', 'EUC_TW', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> EUC_TW
SELECT CONVERT('foo', 'UNICODE', 'EUC_TW');
convert
---------
foo
(1 row)
-- SJIS -> UNICODE
SELECT CONVERT('foo', 'SJIS', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> SJIS
SELECT CONVERT('foo', 'UNICODE', 'SJIS');
convert
---------
foo
(1 row)
-- BIG5 -> UNICODE
SELECT CONVERT('foo', 'BIG5', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> BIG5
SELECT CONVERT('foo', 'UNICODE', 'BIG5');
convert
---------
foo
(1 row)
-- GBK -> UNICODE
SELECT CONVERT('foo', 'GBK', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> GBK
SELECT CONVERT('foo', 'UNICODE', 'GBK');
convert
---------
foo
(1 row)
-- GB18030 -> UNICODE
SELECT CONVERT('foo', 'GB18030', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> GB18030
SELECT CONVERT('foo', 'UNICODE', 'GB18030');
convert
---------
foo
(1 row)
-- UHC -> UNICODE
SELECT CONVERT('foo', 'UHC', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> UHC
SELECT CONVERT('foo', 'UNICODE', 'UHC');
convert
---------
foo
(1 row)
-- JOHAB -> UNICODE
SELECT CONVERT('foo', 'JOHAB', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> JOHAB
SELECT CONVERT('foo', 'UNICODE', 'JOHAB');
convert
---------
foo
(1 row)
-- TCVN -> UNICODE
SELECT CONVERT('foo', 'TCVN', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> TCVN
SELECT CONVERT('foo', 'UNICODE', 'TCVN');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN2
SELECT CONVERT('foo', 'UNICODE', 'LATIN2');
convert
---------
foo
(1 row)
-- LATIN2 -> UNICODE
SELECT CONVERT('foo', 'LATIN2', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN3
SELECT CONVERT('foo', 'UNICODE', 'LATIN3');
convert
---------
foo
(1 row)
-- LATIN3 -> UNICODE
SELECT CONVERT('foo', 'LATIN3', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN4
SELECT CONVERT('foo', 'UNICODE', 'LATIN4');
convert
---------
foo
(1 row)
-- LATIN4 -> UNICODE
SELECT CONVERT('foo', 'LATIN4', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN5
SELECT CONVERT('foo', 'UNICODE', 'LATIN5');
convert
---------
foo
(1 row)
-- LATIN5 -> UNICODE
SELECT CONVERT('foo', 'LATIN5', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN6
SELECT CONVERT('foo', 'UNICODE', 'LATIN6');
convert
---------
foo
(1 row)
-- LATIN6 -> UNICODE
SELECT CONVERT('foo', 'LATIN6', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN7
SELECT CONVERT('foo', 'UNICODE', 'LATIN7');
convert
---------
foo
(1 row)
-- LATIN7 -> UNICODE
SELECT CONVERT('foo', 'LATIN7', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN8
SELECT CONVERT('foo', 'UNICODE', 'LATIN8');
convert
---------
foo
(1 row)
-- LATIN8 -> UNICODE
SELECT CONVERT('foo', 'LATIN8', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN9
SELECT CONVERT('foo', 'UNICODE', 'LATIN9');
convert
---------
foo
(1 row)
-- LATIN9 -> UNICODE
SELECT CONVERT('foo', 'LATIN9', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> LATIN10
SELECT CONVERT('foo', 'UNICODE', 'LATIN10');
convert
---------
foo
(1 row)
-- LATIN10 -> UNICODE
SELECT CONVERT('foo', 'LATIN10', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> ISO-8859-5
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-5');
convert
---------
foo
(1 row)
-- ISO-8859-5 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-5', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> ISO-8859-6
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-6');
convert
---------
foo
(1 row)
-- ISO-8859-6 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-6', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> ISO-8859-7
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-7');
convert
---------
foo
(1 row)
-- ISO-8859-7 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-7', 'UNICODE');
convert
---------
foo
(1 row)
-- UNICODE -> ISO-8859-8
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-8');
convert
---------
foo
(1 row)
-- ISO-8859-8 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-8', 'UNICODE');
convert
---------
foo
(1 row)
-- EUC_JP -> SJIS
SELECT CONVERT('foo', 'EUC_JP', 'SJIS');
convert
---------
foo
(1 row)
-- SJIS -> EUC_JP
SELECT CONVERT('foo', 'SJIS', 'EUC_JP');
convert
---------
foo
(1 row)
-- EUC_JP -> MULE_INTERNAL
SELECT CONVERT('foo', 'EUC_JP', 'MULE_INTERNAL');
convert
---------
foo
(1 row)
-- SJIS -> MULE_INTERNAL
SELECT CONVERT('foo', 'SJIS', 'MULE_INTERNAL');
convert
---------
foo
(1 row)
-- MULE_INTERNAL -> EUC_JP
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_JP');
convert
---------
foo
(1 row)
-- MULE_INTERNAL -> SJIS
SELECT CONVERT('foo', 'MULE_INTERNAL', 'SJIS');
convert
---------
foo
(1 row)
-- EUC_TW -> BIG5
SELECT CONVERT('foo', 'EUC_TW', 'BIG5');
convert
---------
foo
(1 row)
-- BIG5 -> EUC_TW
SELECT CONVERT('foo', 'BIG5', 'EUC_TW');
convert
---------
foo
(1 row)
-- EUC_TW -> MULE_INTERNAL
SELECT CONVERT('foo', 'EUC_TW', 'MULE_INTERNAL');
convert
---------
foo
(1 row)
-- BIG5 -> MULE_INTERNAL
SELECT CONVERT('foo', 'BIG5', 'MULE_INTERNAL');
convert
---------
foo
(1 row)
-- MULE_INTERNAL -> EUC_TW
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_TW');
convert
---------
foo
(1 row)
-- MULE_INTERNAL -> BIG5
SELECT CONVERT('foo', 'MULE_INTERNAL', 'BIG5');
convert
---------
foo
(1 row)
RESET SESSION AUTHORIZATION;
DROP USER foo;
src/test/regress/parallel_schedule
浏览文件 @
0345f584
...
...
@@ -74,7 +74,5 @@ test: select_views alter_table portals_p2 rules foreign_key
# The sixth group of parallel test
# ----------
# "plpgsql" cannot run concurrently with "rules"
test: limit plpgsql temp domain rangefuncs copy2
test: limit plpgsql temp domain rangefuncs copy2 conversion
test: without_oid
src/test/regress/serial_schedule
浏览文件 @
0345f584
# $Header: /cvsroot/pgsql/src/test/regress/serial_schedule,v 1.1
3 2002/07/20 05:16:59 momjian
Exp $
# $Header: /cvsroot/pgsql/src/test/regress/serial_schedule,v 1.1
4 2002/07/25 10:07:13 ishii
Exp $
# This should probably be in an order similar to parallel_schedule.
test: boolean
test: char
...
...
@@ -86,3 +86,4 @@ test: temp
test: domain
test: rangefuncs
test: without_oid
test: conversion
src/test/regress/sql/conversion.sql
0 → 100644
浏览文件 @
0345f584
--
-- create user defined conversion
--
CREATE
USER
foo
WITH
NOCREATEDB
NOCREATEUSER
;
SET
SESSION
AUTHORIZATION
foo
;
CREATE
CONVERSION
myconv
FOR
'LATIN1'
TO
'UNICODE'
FROM
iso8859_1_to_utf8
;
--
-- cannot make same name conversion in same schema
--
CREATE
CONVERSION
myconv
FOR
'LATIN1'
TO
'UNICODE'
FROM
iso8859_1_to_utf8
;
--
-- create default conversion with qualified name
--
CREATE
DEFAULT
CONVERSION
public
.
mydef
FOR
'LATIN1'
TO
'UNICODE'
FROM
iso8859_1_to_utf8
;
--
-- cannot make default conversion with same shcema/for_encoding/to_encoding
--
CREATE
DEFAULT
CONVERSION
public
.
mydef2
FOR
'LATIN1'
TO
'UNICODE'
FROM
iso8859_1_to_utf8
;
--
-- drop user defined conversion
--
DROP
CONVERSION
myconv
;
DROP
CONVERSION
mydef
;
--
-- make sure all pre-defined conversions are fine.
--
-- UNICODE -> SQL_ASCII
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'SQL_ASCII'
);
-- SQL_ASCII -> UNICODE
SELECT
CONVERT
(
'foo'
,
'SQL_ASCII'
,
'UNICODE'
);
-- UNICODE -> LATIN1
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN1'
);
-- LATIN1 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN1'
,
'UNICODE'
);
-- EUC_JP -> UNICODE
SELECT
CONVERT
(
'foo'
,
'EUC_JP'
,
'UNICODE'
);
-- UNICODE -> EUC_JP
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'EUC_JP'
);
-- EUC_KR -> UNICODE
SELECT
CONVERT
(
'foo'
,
'EUC_KR'
,
'UNICODE'
);
-- UNICODE -> EUC_KR
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'EUC_KR'
);
-- EUC_CN -> UNICODE
SELECT
CONVERT
(
'foo'
,
'EUC_CN'
,
'UNICODE'
);
-- UNICODE -> EUC_CN
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'EUC_CN'
);
-- EUC_TW -> UNICODE
SELECT
CONVERT
(
'foo'
,
'EUC_TW'
,
'UNICODE'
);
-- UNICODE -> EUC_TW
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'EUC_TW'
);
-- SJIS -> UNICODE
SELECT
CONVERT
(
'foo'
,
'SJIS'
,
'UNICODE'
);
-- UNICODE -> SJIS
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'SJIS'
);
-- BIG5 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'BIG5'
,
'UNICODE'
);
-- UNICODE -> BIG5
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'BIG5'
);
-- GBK -> UNICODE
SELECT
CONVERT
(
'foo'
,
'GBK'
,
'UNICODE'
);
-- UNICODE -> GBK
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'GBK'
);
-- GB18030 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'GB18030'
,
'UNICODE'
);
-- UNICODE -> GB18030
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'GB18030'
);
-- UHC -> UNICODE
SELECT
CONVERT
(
'foo'
,
'UHC'
,
'UNICODE'
);
-- UNICODE -> UHC
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'UHC'
);
-- JOHAB -> UNICODE
SELECT
CONVERT
(
'foo'
,
'JOHAB'
,
'UNICODE'
);
-- UNICODE -> JOHAB
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'JOHAB'
);
-- TCVN -> UNICODE
SELECT
CONVERT
(
'foo'
,
'TCVN'
,
'UNICODE'
);
-- UNICODE -> TCVN
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'TCVN'
);
-- UNICODE -> LATIN2
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN2'
);
-- LATIN2 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN2'
,
'UNICODE'
);
-- UNICODE -> LATIN3
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN3'
);
-- LATIN3 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN3'
,
'UNICODE'
);
-- UNICODE -> LATIN4
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN4'
);
-- LATIN4 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN4'
,
'UNICODE'
);
-- UNICODE -> LATIN5
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN5'
);
-- LATIN5 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN5'
,
'UNICODE'
);
-- UNICODE -> LATIN6
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN6'
);
-- LATIN6 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN6'
,
'UNICODE'
);
-- UNICODE -> LATIN7
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN7'
);
-- LATIN7 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN7'
,
'UNICODE'
);
-- UNICODE -> LATIN8
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN8'
);
-- LATIN8 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN8'
,
'UNICODE'
);
-- UNICODE -> LATIN9
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN9'
);
-- LATIN9 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN9'
,
'UNICODE'
);
-- UNICODE -> LATIN10
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'LATIN10'
);
-- LATIN10 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'LATIN10'
,
'UNICODE'
);
-- UNICODE -> ISO-8859-5
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'ISO-8859-5'
);
-- ISO-8859-5 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'ISO-8859-5'
,
'UNICODE'
);
-- UNICODE -> ISO-8859-6
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'ISO-8859-6'
);
-- ISO-8859-6 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'ISO-8859-6'
,
'UNICODE'
);
-- UNICODE -> ISO-8859-7
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'ISO-8859-7'
);
-- ISO-8859-7 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'ISO-8859-7'
,
'UNICODE'
);
-- UNICODE -> ISO-8859-8
SELECT
CONVERT
(
'foo'
,
'UNICODE'
,
'ISO-8859-8'
);
-- ISO-8859-8 -> UNICODE
SELECT
CONVERT
(
'foo'
,
'ISO-8859-8'
,
'UNICODE'
);
-- EUC_JP -> SJIS
SELECT
CONVERT
(
'foo'
,
'EUC_JP'
,
'SJIS'
);
-- SJIS -> EUC_JP
SELECT
CONVERT
(
'foo'
,
'SJIS'
,
'EUC_JP'
);
-- EUC_JP -> MULE_INTERNAL
SELECT
CONVERT
(
'foo'
,
'EUC_JP'
,
'MULE_INTERNAL'
);
-- SJIS -> MULE_INTERNAL
SELECT
CONVERT
(
'foo'
,
'SJIS'
,
'MULE_INTERNAL'
);
-- MULE_INTERNAL -> EUC_JP
SELECT
CONVERT
(
'foo'
,
'MULE_INTERNAL'
,
'EUC_JP'
);
-- MULE_INTERNAL -> SJIS
SELECT
CONVERT
(
'foo'
,
'MULE_INTERNAL'
,
'SJIS'
);
-- EUC_TW -> BIG5
SELECT
CONVERT
(
'foo'
,
'EUC_TW'
,
'BIG5'
);
-- BIG5 -> EUC_TW
SELECT
CONVERT
(
'foo'
,
'BIG5'
,
'EUC_TW'
);
-- EUC_TW -> MULE_INTERNAL
SELECT
CONVERT
(
'foo'
,
'EUC_TW'
,
'MULE_INTERNAL'
);
-- BIG5 -> MULE_INTERNAL
SELECT
CONVERT
(
'foo'
,
'BIG5'
,
'MULE_INTERNAL'
);
-- MULE_INTERNAL -> EUC_TW
SELECT
CONVERT
(
'foo'
,
'MULE_INTERNAL'
,
'EUC_TW'
);
-- MULE_INTERNAL -> BIG5
SELECT
CONVERT
(
'foo'
,
'MULE_INTERNAL'
,
'BIG5'
);
RESET
SESSION
AUTHORIZATION
;
DROP
USER
foo
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录