[groonga-dev,03329] Re: [Mroonga] 32bit環境で0000-00-00が1970-01-01になってテストが失敗する

Back to archive index

Susumu Yata susum****@gmail*****
2015年 7月 1日 (水) 16:55:01 JST


矢田です.

Ubuntu 14.04 32-bit 環境で試してみたところ,以下に示す結果となりました.
ただ, 1970-00-00 だとエラーで 1970-01-01 に修正されるケースも考えられるので,
1970 は避けて 1990-00-00 とかにした方が良いと思います.

==== 0000-00-00 の場合

mysql> CREATE TABLE ranges (
    ->   id int PRIMARY KEY,
    ->   start datetime,
    ->   end datetime,
    ->   UNIQUE KEY range_key(start, end)
    -> ) ENGINE = Mroonga;
Query OK, 0 rows affected (0.06 sec)

mysql> INSERT INTO ranges VALUES (1, "0000-00-00 00:00:00",
"2012-10-05 23:59:59");
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> SELECT * FROM ranges;
+----+---------------------+---------------------+
| id | start               | end                 |
+----+---------------------+---------------------+
|  1 | 1970-01-01 00:00:00 | 2012-10-05 23:59:59 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)

====> 1990-00-00 の場合

mysql> CREATE TABLE ranges (
    ->   id int PRIMARY KEY,
    ->   start datetime,
    ->   end datetime,
    ->   UNIQUE KEY range_key(start, end)
    -> ) ENGINE = Mroonga;
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO ranges VALUES (1, "1990-00-00 00:00:00",
"2012-10-05 23:59:59");
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> SELECT * FROM ranges;
+----+---------------------+---------------------+
| id | start               | end                 |
+----+---------------------+---------------------+
|  1 | 1990-01-01 00:00:00 | 2012-10-05 23:59:59 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)

2015-07-01 16:21 GMT+09:00 Masafumi Yokoyama <myoko****@gmail*****>:
> 横山です。
>
> 書き忘れましたが、これはストレージモードの場合です。
> ラッパーモードでは。。。どうなるんでしょうか。。。
>
>
>
> 2015年7月1日 16:17 Masafumi Yokoyama <yokoy****@clear*****>:
>> 横山です。
>>
>> 32bit環境で、Mroongaのテストが失敗するようです。
>>
>> MariaDB (10.1) バンドル作業用の自動テストが32bit環境を使っていて、
>> エラーが出るとの報告をもらいました。せっかくなので共有します。
>>
>> 失敗するのは以下のように0000年を使っているテストです。
>> https://github.com/mroonga/mroonga/blob/master/mysql-test/mroonga/storage/index/multiple_column/unique/datetime/r/insert_delete_insert_invalid_value.result
>>
>> どうやら32bit環境では0000年を扱えない(1970±68まで?)ので、
>> 上のテストだと0000-01-01を期待しているのに結果が1970-01-01に
>> なってしまいます。
>>
>> このテストは0月0日が1月1日になることをテストしていて、年は
>> 重要でないと思うので、ひとまず0000年ではなく1970年あたりを
>> 使うように修正しておきます。
>>
>>
>> --
>> 横山 昌史 <Masafumi Yokoyama>
>> E-mail: yokoy****@clear*****
>> 株式会社クリアコード
>> 〒170-0005 東京都豊島区南大塚3-29-9
>> Tel: 03-5927-9440
>> Web: http://www.clear-code.com/
>>
>> Groongaベースの全文検索システムを総合サポート:
>> http://groonga.org/ja/support/
>>
>> _______________________________________________
>> groonga-dev mailing list
>> groon****@lists*****
>> http://lists.osdn.me/mailman/listinfo/groonga-dev
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.osdn.me/mailman/listinfo/groonga-dev



-- 
Susumu Yata <susum****@gmail*****>



groonga-dev メーリングリストの案内
Back to archive index