[pgsql-jp: 33019] Re: C言語埋め込みでのビット演算
TFL)久村 孝之
hisamura.takayuki @ tfl.fujitsu.com
2004年 5月 28日 (金) 14:33:06 JST
自己レスです。
ecpgでプリコンパイルして生成されるCのソースに問題が
あるようです。
.pgcのソースファイル中のビット演算を行っている箇所の
変換が失敗しています。
プリコンパイル後、次のように変換されます。
.pgc(埋め込みSQLソースファイル)
(ID & X'FF0000') = X'010000'
.c(ecpgでプリコンパイル済みソースファイル)
(ID & ' ) = '
16進の記述が抜け落ちてしまっています。
.cのソースに足りない箇所を追加したところ、正しく動作
しました。直接、.cのファイルをいじるのではあんまりな
ので、最後の手段かと思っています。
.pgcでの指定時に何かお作法があるのでしょうか。
ご存知の方がいらっしゃいましたらご教授ください。
よろしくお願い致します。
以上
----- Original Message -----
From: "TFL)久村 孝之" <hisamura.takayuki @ tfl.fujitsu.com>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Friday, May 28, 2004 1:53 PM
Subject: [pgsql-jp: 33018] C言語埋め込みでのビット演算
> こんにちは。久村と申します。
>
> ecpgを利用してC言語埋め込みSQLで開発しています。
> SQL文でビット演算を行いたいのですが、以下のようなメッセージが
> 表示され、実行時にエラーとなります。
> (-400:'ERROR: pg_atoi: error in "XFF0000": can't parse "
> XFF0000"' in line )
>
> 実行しているSQLは次のようなものです。
> SELECT DATA FROM TABLE WHERE (ID & 'XFF0000') = 'X010000';
> SELECT DATA FROM TABLE WHERE (ID & X'FF0000') = X'010000';
> いずれも実行時にエラーでした。
>
> psqlでコマンドラインから確認したところ、以下は問題なく動作
> しました。
> SELECT DATA FROM TABLE WHERE (ID & X'FF0000') = X'010000';
>
> 以下はpsqlでもだめでした。
> SELECT DATA FROM TABLE WHERE (ID & 'XFF0000') = 'X010000';
>
> 環境は次の通りです。
> OS :Linux 2.2.19-6.2.16
> PostgreSQL:7.2.1
>
> 埋め込みSQLでビット演算を行う方法をご存知の方がいらっしゃい
> ましたらご教授ください。
>
> よろしくお願い致します。
>
> 以上
> ---------------------------------------------------------------------
> 久村 孝之
> e-mail:hisamura.takayuki @ tfl.fujitsu.com
> ---------------------------------------------------------------------
>
pgsql-jp メーリングリストの案内