Merged revisions 8497-8499 from branches/8.0-patches:
Fixes by dddwwwbbb in PR131 on Github
Various fixes fro sqlite tests by dddwwwbbb (PR131)
Add a fix for reading null values...
Merged revisions 8492-8495 from branches/8.0-patches:
Fix some compiler hints and warnings.
This is a fix for the Firebird transaction problem mentioned in https://zeoslib.sourceforge.io/viewtopic.php?t=225651
Hopfully this will keep ZCbor working on FPC while still including Zeos.inc...
ZCbor.pas does not include ZCore.inc
Hello Artie, I added the include. Thanks for mentioning the problem :) Best regards, Jan
Fix for [#650]: ZCbor.pas does not include ZCore.inc
ZCbor.pas does not include ZCore.inc
Merged revision 8490 from branches/8.0-patches:
Update the README.md to reflect the new support for QuestDB
MySQL 8.0.44 error connecting bad handshake. Code: 1043
Closed because there was no answer...
PostgreSQL UUID primary key editing issue
Fixed :)
Cannot compile under Delphi 13.0
Fixed by now :)
Merged revision 8488 from branches/8.0-patches:
Add the ZCbor unit to the Delphi packages, where it is supported (Delphi 2009+)
Thanks for the answer. The problem was with zeosdbo-8.0.0-stable.zip Haven't tried it yet with 8.0-patches branch I will test again to see if the problem persists Thanks in advance.
Hello Ricardo, do you have that problem with the ZIP file from the downloads section or do you have that problem with the 8.0-patches branch from SVN / GIT? If you have the problem with the ZIP file from the downloads section, can you try the the 8.0-patches branch? Best regards, Jan
Zeos 8 and Delphi 2007
Revision(en) 8486 von branches/8.0-patches zusammengeführt:
A first idea for QuestDB modifications.
Merge revisions 8476-8484 from branches/8.0-patches:
By MShark67: DuckDB column codepage fix, version info and implicit conversion changes.
By aehimself: Some warning fixes
Why not just replace all LongWord to Cardinal? In FPC, LongWord is always 32bit. https://www.freepascal.org/docs-html/rtl/system/longword.html https://wiki.freepascal.org/LongWord So all usages of LongWord currently in ZeosLib should be 32bit. Also, it does not require FMX to run ZeosLib on Delphi for Linux. I'm migrating a Windows server program (which does not have GUIs) to Linux. It works now after the 2 changes I mentioned. Also, I would like to ask something about the versions of ZeosLib. I...
Why not just replace all LongWord to Cardinal? In FPC, LongWord is always 32bit. https://www.freepascal.org/docs-html/rtl/system/longword.html https://wiki.freepascal.org/LongWord So all usages of LongWord currently in ZeosLib should be 32bit. Also, it does not require FMX to run ZeosLib on Delphi for Linux. I'm migrating a Windows server program (which does not have GUIs) to Linux. It works now after the 2 changes I mentioned.
Why not just replace all LongWord to Cardinal? In FPC, LongWord is always 32bit. https://www.freepascal.org/docs-html/rtl/system/longword.html https://wiki.freepascal.org/LongWord So all usages of LongWord currently in ZeosLib should be 32bit. Also, it does not require FMX to run ZeosLib on Delphi for Linux. I'm migrating a Windows server program (which does not have GUIs) to Linux. It works now after the 2 changes I mentioned. And Firebird and SQLite do have android version, they are widely used...
Why not just replace all LongWord to Cardinal? In FPC, LongWord is always 32bit. https://www.freepascal.org/docs-html/rtl/system/longword.html https://wiki.freepascal.org/LongWord So all usages of LongWord currently in ZeosLib should be 32bit. Also, it does not require FMX to run ZeosLib on Delphi for Linux. I'm migrating a Windows server program (which does not have GUIs) to Linux.
Why not just replace all LongWord to Cardinal? In FPC, LongWord is always 32bit. https://www.freepascal.org/docs-html/rtl/system/longword.html https://wiki.freepascal.org/LongWord So all usages of LongWord currently in ZeosLib should be 32bit. Also, it does require FMX to run ZeosLib on Delphi for Linux. I'm migrating a Windows server program (which does not have GUIs) to Linux.
Why not just replace all LongWord to Cardinal? In FPC, LongWord is always 32bit. https://www.freepascal.org/docs-html/rtl/system/longword.html https://wiki.freepascal.org/LongWord So all usages of LongWord currently in ZeosLib should be 32bit.
Hello Artie, Also, should we review all LongWord usage? It should affect all 64bit mobile platforms on Delphi. Yes - you are right. We need to review all the header translations which typically are on the plain driver layer of Zeos. This will become tedious and hard to test for several reasons: I don't have a way to test all the DBMs with Delphi for Linux or even Delphi for Android. I don't have an Embarcadero license, that includes Linux and most database libraries (libpq, libmysql, ...) are not...
Disable something that looks like debug code - and prevents compilation on Lazarus 3.0.4...
A possible fix for older Delphi versions
Revert the test to its old form.
A not so good fix for older Delphis
Also, should we review all LongWord usage? It should affect all 64bit mobile platforms on Delphi.
I hope this makes the test work on older Delphis...
Fix a compilation problem on older Delphis
Changes suggested in [#648] to support MySQL on Delphi Linux targets.
MySQL does not work under all Delphi 64bit Posix targets
Merged revision 8473 from branches/8.0-patches:
Merged revisions 8458-8472 from branches/8.0-patches:
Add a define that should make it more possible to compile Zeos on Delphi for Linux.
Fixes for #647
Hello Mark, I applied your changes to the 8.0-patches branch. Thank you :) Best regards, Jan
I got a chance to play around with this and overriding setguid and making that conversion appears to solve all of my issues mentioned above. Here's what I used: procedure TZPostgreSQLPreparedStatementV3.SetGUID(Index: Integer; const Value: TGUID); var P: PByte; D1: Cardinal; D2, D3: Word; begin P := PByte(@Value); {$IFNDEF ENDIAN_BIG} {$Q-} {$R-} D1 := PG2Cardinal(P); PCardinal(P)^ := D1; D2 := PWord(P + 4)^; PWord(P + 4)^ := (D2 and $00FF shl 8) or (D2 and $FF00 shr 8); D3 := PWord(P + 6)^; PWord(P...
Fix a typo in the uses clause...
Fix some warnings...
Allow compilation of an internal SOAP proxy on FPC if one knows how to...
I agree. As mentioned above the getGuid function does: if FBinaryValues then begin {$IFNDEF ENDIAN_BIG} {$Q-} {$R-} Result.D1 := PG2Cardinal(@SrcUUID.D1); //what a *beep* swapped digits! but only on reading Result.D2 := (SrcUUID.D2 and $00FF shl 8) or (SrcUUID.D2 and $FF00 shr 8); Result.D3 := (SrcUUID.D3 and $00FF shl 8) or (SrcUUID.D3 and $FF00 shr 8); PInt64(@Result.D4)^ := PInt64(@SrcUUID.D4)^; {$IFDEF RangeCheckEnabled} {$R+} {$ENDIF} {$IFDEF OverFlowCheckEnabled} {$Q+} {$ENDIF} {$ELSE} Result...
Hello Mark, when comparing your UUIDs, it seems that bytes get swapped somewhere - or need to be swapped again somewhere. Looking at the structure of a TGUID might help: type TGuid = packed record case Integer of 1: ( Data1: DWord; // First 4 bytes of GUID Data2: Word; // Bytes 5 and 6 of GUID Data3: Word; // Bytes 7 and 8 of GUID Data4: array [0..7] of Byte; // Bytes 9-17 of GUID ); So it looks like Data1, Data2 and Data3 get (not) byteswapped (little endian to big endian or vice versa), while Data4...
It looks like uuid fields will be retrieved correctly, but get messed up when inserted. Here's a simple test case of inserting a guid and then selecting it back. The results are: Inserted: {783DAE87-E33E-4314-8730-398ED525F07B} Retrieved: {87AE3D78-3EE3-1443-8730-398ED525F07B} // deleted the table records first.. not shown ZQuery.SQL.Text := 'insert into uuid_simple values (:myGuid)'; var myGuid: TGuid := TGuid.Create('{783DAE87-E33E-4314-8730-398ED525F07B}'); ZQuery.Params[0].AsGUID := myGuid; ZQuery.ExecSQL;...
PostgreSQL UUID primary key editing issue
Add a fix for the special case of a TBCD having a precision of 0.
Add compression capabililties to the Webservice Proxy Client
Add compression capabilities to the proxy server for SOAP as well as for CBOR
I am sure, it was meant like that.
Add the SQL in the case of a problem.
This should give more precise information. Just in case...
Bad handshake Code: 1043 on connect
Bad handshake Code: 1043 on connect
Also closed because it is a duplicate of [#646]
MySQL 8.0.44 error connecting bad handshake. Code: 1043
Closed, because it is a duplicate of [#646]
Hello Andre, when looking for the error description, the most common answer was that "bad handshake" usuall is a problem when the client library is too old or too new. So - why do you use libmysql from MySQL 5? Does the error also happen when using libmysql from mysql 8.0.44? It seems that libmysql isn't available as a 32 bits version anymore. If you really have to keep using 32 bits, you might want to test libmariadb, which can still be compiled for 32 bits. We have some versions of libmariadb in...
MySQL 8.0.44 error connecting bad handshake. Code: 1043
MySQL 8.0.44 error connecting bad handshake. Code: 1043
MySQL 8.0.44 error connecting bad handshake. Code: 1043
MySQL 8.0.44 error connecting bad handshake. Code: 1043
MySQL 8.0.44 error connecting bad handshake. Code: 1043
Bad handshake Code: 1043 on connect
Bad handshake Code: 1043 on connect
WebServiceProxyDriver
Delphi 13 Version
for me problem only occurs for 64bit target and it seams like changing TZCodePageConversionStream.write to `function Write(const Buffer; Count:{$IFDEF MEMORYSTREAM_REALLOC_NATIVEINT}NativeInt{$ELSE}Longint{$ENDIF}): {$IFDEF MEMORYSTREAM_REALLOC_NATIVEINT}NativeInt{$ELSE}Longint{$ENDIF}; override;` solved problem for MySQL under delphi 13, target 64bit
Hi, I see that TZVarVarLenDataRefStream.Write is not callled from TStream.WriteBuffer, and so FUpdated stays false, if blob is larger then FUpdated is changed by TZVarVarLenDataRefStream.Realloc. TStream.WriteBuffer executes at line LTotalCount := Write(Buffer, Count); function TMemoryStream.Write(const Buffer; Count: TNativeCount): TNativeCount; instead of overriden TZVarVarLenDataRefStream.Write I even changed declaration of TZVarVarLenDataRefStream.Write to match TMemoryStream called version function...
Some changes that fix problems introduced in the last proxy server changes.
Changes to make the duckdb driver compile on Linux
Some fixes for the proxy server.
if FILEBODY is greater than 128K
Problem with ORACLE long raw
Extend the ValidateTOPT function, so a time can be given and diagnostics can be done as to why a certain OTP didn't work at a specific time.
Sometimes RowSize can be zero and we would get a division by zero exception then...
[MariaDB] Commands out of sync error after ExecSQL exception
Merged revisions 8445-8456 from branches/8.0-patches:
Add the property pg_never_use_hostaddr, so the IP address can go into the host connection paramter. This helps in GSSAPI setups. See here for more details: