2017-06-20 10 views
0

HANA JDBCドライバは、共用体の両方の列が同じ型であっても共用体が実行されたときに、列に異なるメタデータ型を戻します。私は結果セットのメタデータを調べると、両方の列がNCHAR型を持っているものの、結果列の型が期待される、イベントとしてNVARCHAR、ないNCHARあるSAPA HANA JDBCメタデータ

create table test (
    A NCHAR(1), 
    B NCHAR(1) 
); 

insert into test values('A','B'); 

select a from test union select b from test; 

は、下のケースを考えてみましょう。

しかし私は、クエリを実行する場合:

select a from test union select a from test; 

JDBCメタデータが予期される型NCHARを返します。

その他のデータベース、特にOracleは、このように動作しません。両方の列が同じ型の場合、JDBC型はUNION上に保持されます。

以下は、私が

Implementation-Title: SAP HANA JDBC Driver 
Implementation-Vendor: SAP SE 
Implementation-Version: 2.0.5-e130cbef291d3b62d5b138d3d5ce24e251013ac2 

この上の任意のアイデアを使用していますJDBCドライバの詳細はありますか? ドライバを強制的に保存する方法はありますか?事前

+0

申し訳ありませんが、間違いを訂正しました。 UNIONで同じ列を選択すると、JDBCタイプが保持されます – user7981386

答えて

0

おかげで残念ながら、私たちは、あなたが使用しているものドライバのバージョンを知りません。しかし、これは、(N)CHARが廃止予定のデータ型であるため、HANAの内部動作によるものと思われます。この場合、HANAはサポートされているタイプ(N)VARCHARを正しく配信します。

+0

ドライバの詳細が追加されました(上記参照)。 – user7981386

+0

UNIONで同じ列を選択すると、JDBCの型が保持されます。実際には、HANAは(N)CHARをサポートしています。私の知る限りでは、これらのタイプは廃止されましたが、廃止予定の最初の計画がありました。このトピックに関する公式の声明を検索したが、見つからなかった場合これらのJDBCタイプが推奨されていないと公式に述べられているリンクまたはドキュメント参照を私に送信できますか? – user7981386

+0

現在のドキュメントhttps://help.sap.com/viewer/4fe29514fd584807ac9f2a04f6754767/2.0.01/en-US/a33f7884b0c14c00b1a76ecd8af5feca.htmlは明らかに、固定長文字型がサポートされており、下位互換性のためにのみ保持されないと述べています。型変換は、JDBCドライバソフトウェアではなくUNION演算子(HANAサーバ)で実際に行われます。クエリオプティマイザは、2番目の例では完全に同じ列を扱っているため、異なるUNION実装(UNION対MATERIALIZED UNION)を選択することを理解しています。 –