Npgsql(v。3.1.7)を使用してタプルを取得しようとすると、さまざまな結果が得られます。Npgsqlはどのような種類のタプルをサポートしていますか?
整数のタプルは大丈夫動作するようです:
SELECT (1, 2)
これは、整数1と2
を含むオブジェクトの配列を返しますが、他のデータ型で、私は障害の様々なタイプを取得します:
これによりSELECT (1, 'two')
、私はテキストでNpgsqlExceptionを取得。
SELECT (1, 2, 'three')
同じことが、今回は、不明なメッセージ・コードは101
です。これはASCII値が'e'
で、末尾に'f'
を付けると('threef'
)、コードは102
になります。
SELECT (1, 2, 3, 'four')
Iは整数1、2、3を含むオブジェクトの配列を取得し、この時、及び1718580594.この最後は0x666F7572あります。 0x66
,0x6F
,0x75
および0x72
は、'f'
,'o'
,'u'
および'r'
のASCII値である。
SELECT ('one', 2)
これは最終的にタイムアウトハングと。 1点で
(データセットを充填する際にも再現性)のExecuteReaderを使用して、私は内側のEndOfStreamExceptionとNpgsqlExceptionを得たが、私はそのいずれかに掲示する簡単なREPROを見つけることができません。
これらはNpgsqlのバグですか、何か間違っていますか?
ありがとう、シェイ、。はい、私はタプル/レコード対Postgresの配列の違いを理解していますが、 'SELECT(1,2)での最初のテストからオブジェクト配列が返されたので、オブジェクト配列はNpgsqlがPostgreSQLのタプルを表すために使う型です私には合理的です。 –
Shayに通知するために、この問題を修正したプルリクエストを提出します –
この修正は、テストケースと実際の使用事例で機能します。ありがとう、シェイとサミ! –