[fpc-pascal] Cannot write datetime field on sqlite3 database on ARM

Toru Takubo takubo at e-parcel.co.jp
Tue Mar 9 15:34:20 CET 2021


On 2021/03/09 18:11, LacaK via fpc-pascal wrote:
> I did run test program on RaspberryPI: Linux+ARM and results are as expected.
> (FPC 3.2.0)
> 
> -Laco.
>
Thank you for your reproduction test. It may be a good news that the problem would
not be in the compiler but around configuration or environment.

Do you have a native compiler on RaspberryPI, or using cross compiler?
My compiler setting is below. Does something missing or wrong?
-------------------------------------------
C:\lazarus\fpc\3.2.0\bin\i386-win32\fpc.exe
-Tlinux
-Parm
-MObjFPC
-Sh
-CX
-O3
-XX
-l
-vewnibq
-vh-
-vm5057,5028,5024,3042
-Fiobj\arm-linux
-Fu.
-FEobj\arm-linux
-oobj\arm-linux\project1
-------------------------------------------

If possible, would you publish your executive of the test program to try it?

Toru

> Dňa 9.3.2021 o 1:47 Toru Takubo via fpc-pascal napísal(a):
>> On 2021/03/08 16:54, Michael Van Canneyt via fpc-pascal wrote:
>>>
>>>
>>> On Mon, 8 Mar 2021, Toru Takubo via fpc-pascal wrote:
>>>
>>>> Hi,
>>>>
>>>> I am developing my app on Windows and building apps for other
>>>> platforms by using cross compiler. Now I have a problem only
>>>> occurred on Linux ARM.
>>>>
>>>> The problem is that it cannot write datetime field on sqlite3
>>>> database. It can read/write other fields like int, varchar
>>>> or blob, but always write zero in datetime (maybe float as well)
>>>> field.
>>>>
>>>> Does anyone have an idea about this issue? I am not sure it is
>>>> fpc issue, but better to report bug?
>>>
>>> It sounds like a floating point problem. As you probably know, a TDateTime
>>> type is actually a double type. Did you try with a float value ?
>>>
>>> The DB explorer tools probably just use strings to read/write from the
>>> database, so they will not be bothere by such things, but FPC stores dataset
>>> values in 'native' formats in memory.
>>>
>>> I don't know what to advise to further investigate the issue, One thing to
>>> try would be to test whether normal float arithmetic or date arithmetic works.
>>> If not, then the compiler people will need to give more advice.
>>>
>>
>> I created a simple test code, and ran on linux-i386 and linux-arm.
>> Test on linux-i386 is OK but on linux-arm, I got unexpected values
>> "30-12-99" as datetime and "2.12199579096527E-314" as float, which are different
>> from values previously set. (except INT and VARCHAR fields)
>>
>> ---linux-i386--------------------------------------------
>> INT, VARCHAR,           DATETIME,           DOUBLE
>> 0, 9-3-21 08:50:23, 9-3-21 08:50:23, 0
>> 1, 9-3-21 12:16:06, 9-3-21 12:16:06, 0.142857142857143
>> 2, 9-3-21 15:41:49, 9-3-21 15:41:49, 0.285714285714286
>> 3, 9-3-21 19:07:32, 9-3-21 19:07:32, 0.428571428571429
>> 4, 9-3-21 22:33:15, 9-3-21 22:33:15, 0.571428571428571
>> 5, 10-3-21 01:58:58, 10-3-21 01:58:58, 0.714285714285714
>> 6, 10-3-21 05:24:40, 10-3-21 05:24:40, 0.857142857142857
>> 7, 10-3-21 08:50:23, 10-3-21 08:50:23, 1
>> 8, 10-3-21 12:16:06, 10-3-21 12:16:06, 1.14285714285714
>> 9, 10-3-21 15:41:49, 10-3-21 15:41:49, 1.28571428571429
>>
>> ---linux-arm---------------------------------------------
>> INT, VARCHAR,           DATETIME,           DOUBLE
>> 0, 9-3-21 08:55:53, 30-12-99, 2.12199579096527E-314
>> 1, 9-3-21 12:21:36, 30-12-99, 2.12199579096527E-314
>> 2, 9-3-21 15:47:18, 30-12-99, 2.12199579096527E-314
>> 3, 9-3-21 19:13:01, 30-12-99, 2.12199579096527E-314
>> 4, 9-3-21 22:38:44, 30-12-99, 2.12199579096527E-314
>> 5, 10-3-21 02:04:27, 30-12-99, 2.12199579096527E-314
>> 6, 10-3-21 05:30:10, 30-12-99, 2.12199579096527E-314
>> 7, 10-3-21 08:55:53, 30-12-99, 2.12199579096527E-314
>> 8, 10-3-21 12:21:36, 30-12-99, 2.12199579096527E-314
>> 9, 10-3-21 15:47:19, 30-12-99, 2.12199579096527E-314
>>
>> I used a shared library libsqlite3.so included in the "DB Browser for SQLite",
>> so it should work. What can cause such a problem only in the specific field
>> on the specific platform?
>>
>> Thank you in advance for any advice.
>>
>> Toru
>>
>>
>>
>>
>> _______________________________________________
>> fpc-pascal maillist  -fpc-pascal at lists.freepascal.org
>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
> 


More information about the fpc-pascal mailing list