Mac De Oracle Heterogeneous! #79
前回のつづき、
Generic Connectivyty経由でMySQL4.0.x、MySQL4.1.13aの文字型にアクセス最終回
この検証でそれなりにネタは仕入れる事ができたので、この辺りでGeneric Connectivityは一旦終了する。
=========まとめ=======
| Generic Connectivityの文字型マッピング | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| MySQL | Oracle10g R1 | Generic Connectivityでの利用 | 備 考 | ||||||
| 型 | サイズ | binary属性 | 文字長セマンティクス | version | 型 | サイズ | 文字長セマンティクス | ||
| char型 | 20 | -- | バイト | 4.0.25 | char型 | 20 | バイト | △ | 問合せ、登録、更新とも問題ないのだが、MySQL側でbinary属性が指定されていない場合には、DMLの書き方により、リモートソートが実行され、英字の大文字小文字が区別されなかったり、nullや空文字は、昇順ソートの場合先頭に置かれる。検証では、リモートマップされるクエリをインラインビューに書き換え、そのインラインビューに対して、NO_MERGEヒントを付加することで回避することができた。Oracleは空文字をnullとして扱うので、その点には注意。 定義したサイズを超える文字列を登録した場合には、エラーとなる。但し、char(20)まででしか確認していない。データディクショナリで確認したところ、char(255)では、MySQL側がバイトセマンティクスであるはずなのに、Oracle側では文字セマンティクスで、32512文字とマッピングされている。今回の検証ではこの件については深く検証していないので要注意。 |
| binary | バイト | ||||||||
| 255 | -- | バイト | 32512 | 文字 | |||||
| binary | 文字 | ||||||||
| 20 | -- | 文字 | 4.1.13a | char型 | 40 | バイト | △ | 問合せ、登録、更新とも問題ないのだが、MySQL側でbinary属性が指定されていない場合には、DMLの書き方により、リモートソートが実行され、英字の大文字小文字が区別されなかったり、nullや空文字は、昇順ソートの場合先頭に置かれる。検証では、リモートマップされるクエリをインラインビューに書き換え、そのインラインビューに対して、NO_MERGEヒントを付加することで回避することができた。Oracleは空文字をnullとして扱うので、その点には注意。 定義したサイズを超える文字列を登録した場合には、エラーとなる。但し、char(20)まででしか確認していない。データディクショナリで確認したところ、char(255)では、MySQL側がバイトセマンティクスであるはずなのに、Oracle側では文字セマンティクスで、32256文字とマッピングされ、MySQL4.0.25の場合とより多少少ない。今回の検証ではこの件については深く検証していないので要注意。 |
|
| binary | バイト | ||||||||
| 255 | -- | 文字 | varchar2型 | 32256 | 文字 | ||||
| binary | 文字 | ||||||||
| 127 | -- | 文字 | char型 | 32256 | 文字 | char(127)はSJISで254バイトのchar(254)でなく、なんと、char(32256 char)としてマッピングされている。登録に関しては未テスト。 |
|||
| 128 | -- | 文字 | varchar2型 | 256 | バイト | char(255)とchar(128)の差からは想像できない、varchar2(32256 char)とvarchar2(256)というマッピングの差があるので要注意。 | |||
| varchar型 | 20 | -- | バイト | 4.0.25 | varchar2型 | 20 | バイト | △ | 問合せ、登録、更新とも問題ないのだが、MySQL側でbinary属性が指定されていない場合には、DMLの書き方により、リモートソートが実行され、英字の大文字小文字が区別されなかったり、nullや空文字は、昇順ソートの場合先頭に置かれる。検証では、リモートマップされるクエリをインラインビューに書き換え、そのインラインビューに対して、NO_MERGEヒントを付加することで回避することができた。Oracleは空文字をnullとして扱うので、その点には注意。 定義したサイズを超える文字列を登録した場合には、エラーとなる。但し、varchar(20)まででしか確認していない。データディクショナリで確認したところ、varchar(255)では、MySQL側がバイトセマンティクスであるはずなのに、Oracle側では文字セマンティクスで、32512文字とマッピングされている。今回の検証ではこの件については深く検証していないので要注意。 |
| binary | バイト | ||||||||
| 255 | -- | バイト | varchar2型 | 32512 | 文字 | ||||
| binary | 文字 | ||||||||
| 20 | -- | 文字 | 4.1.13a | varchar2型 | 40 | バイト | △ | 問合せ、登録、更新とも問題ないのだが、MySQL側でbinary属性が指定されていない場合には、DMLの書き方により、リモートソートが実行され、英字の大文字小文字が区別されなかったり、nullや空文字は、昇順ソートの場合先頭に置かれる。検証では、リモートマップされるクエリをインラインビューに書き換え、そのインラインビューに対して、NO_MERGEヒントを付加することで回避することができた。Oracleは空文字をnullとして扱うので、その点には注意。 定義したサイズを超える文字列を登録した場合には、エラーとなる。但し、varchar(20)まででしか確認していない。データディクショナリで確認したところ、varchar(255)では、MySQL側がバイトセマンティクスであるはずなのに、Oracle側では文字セマンティクスで、32256文字とマッピングされ、MySQL4.0.25の場合とより多少少ない。今回の検証ではこの件については深く検証していないので要注意。 |
|
| binary | バイト | ||||||||
| 255 | -- | 文字 | varchar2型 | 32256 | 文字 | ||||
| binary | |||||||||
| 256 | -- | 文字 | long型 | -- | バイト | × | varchar(256)を超えるとlong型にマッピングされてしまうので、tinytext型、text型と同じ扱いになる。binary属性が付いていれば、tinyblob型やblob型と同じ扱いになる。 | ||
| tinytext型 | -- | -- | バイト | 4.0.25 | long型 | -- | バイト | × | tinytext型の最大サイズは255バイト。登録、更新は可能なのだが、long型にマッピングされているためほとんどの関数は利用できない。ソートは未確認だが、binary属性の無いchar型又は、varchar型と同じであると考えている。また、問合せについて、この検証ではまったく問い合わせることができなかったため、Generic Connectivity経由での利用は諦めたほうがよいと思われる。(ODBCドライバなどを替えれば動作する可能せもあるだろうが、その検証にかかるコストも考慮する必要あり。)Oracleは空文字をnullとして扱うので注意。 |
| -- | -- | バイト | 4.1.13a | long型 | -- | バイト | |||
| tinyblob型 | -- | -- | バイト | 4.0.25 | long raw型 | -- | バイト | × | tinyblob型の最大サイズは255バイト。登録、更新は可能なのだが、long raw型にマッピングされているためほとんどの関数は利用できない。ソートは未確認だが、binary属性のchar型又は、varchar型と同じであると考えている。また、問合せに関して、この検証ではまったく問い合わせることができなかったため、Generic Connectivity経由での利用は諦めたほうがよいと思われる。(ODBCドライバなどを替えれば動作する可能せもあるだろうが、その検証にかかるコストも考慮する必要あり。)Oracleは空文字をnullとして扱うので注意。 |
| -- | -- | バイト | 4.1.13a | long raw型 | -- | バイト | |||
| text型 | -- | -- | バイト | 4.0.25 | long型 | -- | バイト | × | text型の最大サイズは65535バイト。登録、更新は可能なのだが、long型にマッピングされているためほとんどの関数は利用できない。ソートは未確認だが、binary属性の無いchar型又は、varchar型と同じであると考えている。また、問合せに関しては、この検証ではまったく問い合わせることができなかったため、Generic Connectivity経由での利用は諦めたほうがよいと思われる。(ODBCドライバなどを替えれば動作する可能せもあるだろうが、その検証にかかるコストも考慮する必要あり。)Oracleは空文字をnullとして扱うので注意。 |
| -- | -- | バイト | 4.1.13a | long型 | -- | バイト | |||
| blob型 | -- | -- | バイト | 4.0.25 | long raw型 | -- | バイト | × | blob型の最大サイズは65535バイト。登録、更新は可能なのだが、long raw型にマッピングされているためほとんどの関数は利用できない。ソートは未確認だが、binary属性のchar型又は、varchar型と同じであると考えている。また、問合せに関しては、この検証ではまったく問い合わせることができなかったため、Generic Connectivity経由での利用は諦めたほうがよいと思われる。(ODBCドライバなどを替えれば動作する可能せもあるだろうが、その検証にかかるコストも考慮する必要あり。)Oracleは空文字をnullとして扱うので注意。 |
| -- | -- | バイト | 4.1.13a | long raw型 | -- | バイト | |||
さて、久々にGeneric Connectivity以外のネタにしますかね。次回からは。
| 固定リンク | コメント (0) | トラックバック (0)





最近のコメント