5

私は ruby​​rep を初めて使用し、現在 PostgreSQL マスター - マスター レプリケーションに ruby​​rep-1.2.0 バージョンを使用しています。bytea を除くすべてのデータ型が適切に複製されます。bytea 列の複製中に、データが 2 回エスケープされているようです。私はpostgreSQL9.2バージョンを使用しており 、postgres構成でbytea_output = 'hex'bytea_output = 'escape'オプションの両方を試してみましたが、うまくいきませんでした。

左のデータベースのバイト列の値:

\xc30d0409030220f8eef5543ac6906cd234018e307bd602ca16a61e674a6c4368f8018b01c3ae3007ae0313a9e44dc661a97a61cc94032f3ed1921e5987e92ff723f674a903

左の bytea データは、次のように右のデータベースに複製されます。

\x5c3330335c3031355c3030345c3031315c3030335c3030325c3034305c3337305c3335365c3336355c3132345c3037325c3330365c3232305c3135345c3332325c3036345c3030315c3231365c3036305c3137335c3332365c3030325c3331325c3032365c3234365c3033365c3134375c3131325c3135345c3130335c3135305c3337305c3030315c3231335c3030315c3330335c3235365c3036305c3030375c3235365c3030335c3032335c3235315c3334345c3131355c3330365c3134315c3235315c3137325c3134315c3331345c3232345c3030335c3035375c3037365c3332315c3232325c3033365c3133315c3230375c3335315c3035375c3336375c3034335c3336365c3136345c3235315c303033 

何か、rubyrep/postgresql 構成に欠けているものはありますか?

4

1 に答える 1

1

複製プロセス中に何かが値を台無しにしているに違いありません。PostgreSQL 9.1 では、bytea とテキストの間を繰り返しキャストできます。

select 'test'::bytea;

\x74657374 を返します

以下も同じ値を返します。

select 'test'::bytea::text;
select 'test'::bytea::text::bytea;

これは、Ruby-rep がデータ自体を二重にエスケープしているのか、それともエスケープ解除ではなくエスケープしているのか疑問に思います。

この時点で、PostgreSQL 側での私のテストを考えると、適切な対応は、これを ruby​​-rep 開発者のバグとして取り上げることだと思います。これは彼らのコードのバグでなければなりません。

于 2013-04-12T12:51:02.540 に答える