[pgsql-jp: 30133] time 型のマイクロ秒
Satoshi Shioya
shioya-ml @ storm.co.jp
2003年 6月 5日 (木) 11:12:35 JST
はじめまして、ストームの塩谷と申します。
PostgreSQL を 7.1.2 から 7.3.2 にバージョンアップしました。
そうしたら、アプリケーションが奇妙な動作をするようになりました。
7.3.2 で time 型のカラムを NOW で登録、更新すると、マイクロ秒付きで
登録されます。アプリ側(C言語)で time 型を扱う為に、12バイトを
静的に確保しています。
7.3.2 の time 型は15バイトなので、バッファーオーバーフローが
発生してしまいます。
根本的な対策はアプリを修正する事だと考えておりますが、NOW で
登録した際にマイクロ秒無しを環境変数などで簡単にできるのであれば、
非常にありがたいです。
この現象を回避する方法をご存知の方は、ご一報くださいませ。
よろしくお願いします。
以下に簡単な例を記載させて頂きます。
次のようなテーブルがあります。
% psql -c "select * from hoge_table" hoge_db
id | mod_date | mod_time
----+------------+----------
1 | 05-31-2003 | 16:19:04
2 | 10-17-2002 | 10:42:39
7.1.2 の日付と時間を NOW で更新すると、
% psql -c "update hoge_table set mod_date='NOW',mod_time='NOW' where id=1" hoge_db
% psql -c "select * from hoge_table" hoge_db
id | mod_date | mod_time
----+------------+-----------------
1 | 06-05-2003 | 10:40:00
2 | 10-17-2002 | 10:42:39
7.3.2 の日付と時間を NOW で更新すると、
% psql -c "update hoge_table set mod_date='NOW',mod_time='NOW' where id=1" hoge_db
% psql -c "select * from hoge_table" hoge_db
id | mod_date | mod_time
----+------------+-----------------
1 | 06-05-2003 | 10:40:00.833866
2 | 10-17-2002 | 10:42:39.432015
----------------------------------------
塩谷 賢 shioya-ml @ storm.co.jp
pgsql-jp メーリングリストの案内