Page 1 of 12

ZeosLib 7.1 testers-thread

Posted: 14.01.2013, 22:48
by EgonHugeist
Dear Zeos comunity,

today i've added a new category for Zeos 7.1.x.

aim of this thread is simple to share your experiences. If some nightly changes do breaks the compiling or other things going terribly wrong post here. :?

To be clear: We're talking here allways about the latest changes of our SVN repositories: svn://svn.code.sf.net/p/zeoslib/code-0/branches/testing-7.1 (Here all changes start... Dangerous, tempting, coding fun, everybody's welcome)

For help or missing know how, simply open a new thread. :idea:

Posted: 15.01.2013, 11:22
by miab3
EgonHugeist,

Zeos7.1-alpha branches_ testing_R2126:
http://svn.code.sf.net/p/zeoslib/code-0 ... sting-7.1/
compiles and runs on (I have tested):

- D2006,
- D2007 -> C++,
- DXE2 32/64 -> C++(32),
- Lazarus Win 1.1/fpc 2.7.1 32/64,
- Lazarus Lin 1.1/fpc 2.7.1 64 on Debian 64-bit (LMDE 201204).

(Firebird 2.5.3, MySQL 5.5.18, MariaDB 5.5.28, PostgreSQL 9.2.1, MSSQL 2008 R2 Express, Oracle Database Express Edition 11g Release 2).

[s]PS: Does anyone know how to install (run)
Oracle Database Express Edition 11g Release 2(32-bit) on
Windows 8 Pro with Media Center (64-bit) ?[/s]

Michal

Posted: 15.01.2013, 22:59
by EgonHugeist
miab3,

thumbs up, i see you understand me!

Thank's again.

Posted: 22.01.2013, 02:39
by miab3
EgonHugeist,

Zeos7.1-alpha branches_ testing_R2137:
http://svn.code.sf.net/p/zeoslib/code-0 ... sting-7.1/
compiles and runs on (I have tested):

- D2006,
- D2007 -> C++,
- DXE2 32/64 -> C++(32),
- Lazarus Win 1.1/fpc 2.7.1 32/64,
- Lazarus Lin 1.1/fpc 2.7.1 64 on Debian 64-bit (LMDE 201204).

(Firebird 2.5.3, MySQL 5.5.18, MariaDB 5.5.28, PostgreSQL 9.2.1, MSSQL 2008 R2 Express, Oracle Database Express Edition 11g Release 2).

In line 1757 ZAbstractRODataset.pas I think it should be both:

Code: Select all

 begin
 Fields[i].Size := ResultSet.GetMetadata.GetColumnDisplaySize(I+1); 
 Fields[i].DisplayWidth := ResultSet.GetMetadata.GetColumnDisplaySize(I+1);
 end;
or other Size determination.

Michal

Posted: 22.01.2013, 18:04
by EgonHugeist
miab3,

The size determination happens on creation the fields from the TFieldRefs. This is just a displaywidth alignment for MBCsets.

Michal, i've started with MariaDB. And currently i've new fails with the tests. The most of them happen if the current client encoding differ from the database encoding. Did you recognize something like this?

Posted: 23.01.2013, 17:44
by miab3
EgonHugeist,

[s]As for my watching MariaDB update is extremely slow compared to MySQL.[/s] (I use MySQL client).
I see that in version 5.5.28a it is fixed.

It is not good with Size.
In order to properly limit the number of characters in Delphi dbcontrols I now use(in line 1757):

Code: Select all

 begin
  {$IFNDEF FPC} Fields[i].Size := ResultSet.GetMetadata.GetColumnDisplaySize(I+1);{$ENDIF}
  Fields[i].DisplayWidth := ResultSet.GetMetadata.GetColumnDisplaySize(I+1);
 end;
For Lazarus I can not see a good way of limiting the number of input characters.

Michal

Posted: 24.01.2013, 21:52
by miab3
EgonHugeist,
EgonHugeist wrote: Michal, i've started with MariaDB. And currently i've new fails with the tests. The most of them happen if the current client encoding differ from the database encoding. Did you recognize something like this?
Yes, I see that in fact the client encoding must be consistent with the encoding of the database on a server that was not errors.

Michal

Posted: 25.01.2013, 01:22
by EgonHugeist
miab3,
It is not good with Size.
In order to properly limit the number of characters in Delphi dbcontrols I now use(in line 1757):
Code: [Erweitern] [mehr anzeigen] [Verkleinern] [Alles auswählen]
begin
{$IFNDEF FPC} Fields.Size := ResultSet.GetMetadata.GetColumnDisplaySize(I+1);{$ENDIF}
Fields.DisplayWidth := ResultSet.GetMetadata.GetColumnDisplaySize(I+1);
end;

For Lazarus I can not see a good way of limiting the number of input characters.


patch applied R2144, thanks.

Yes, I see that in fact the client encoding must be consistent with the encoding of the database on a server that was not errors.


I see you confirm my current issues. Well i wrote with MDeams inbetween. What i didn't know is that libmariadb.dll is based on libmysql.dll v3.23 (the last pure GPL licence). AFAIK does monty provide a new v10 one, which i hope it fixes some of the isssues. Currently we've a very stable mysql implementation with libmysql.x.
Nice would be some answers how to fix that:
I've detected string truncations for varchar-fields. It seems linmariadb.dll doesn't convert the current client encoding. It might be possible the issue is another one?: 'SET NAMES blabla' has no effect on client side?
Also did i recognice using libmariadb.x fills no text-lobs but no exception is raised!? I'll debug me down to the hidden MySQL warings and check if something strange is suppressed currently. Lets hope the 10.0 client provide some more functionallity.

Michal, do you have some expiriences with 'INLINE' declarations? I'm thinking about using this compiler switch to speed up some code. But i don't know the real effect on using direct codebase instead of a procedure call. I had some thought's accordingly very small but oftenly called procedure like some of the core-layes and the current InternalGet/SetString of the RowAccessor.. What do you think?

Posted: 09.02.2013, 14:40
by miab3
EgonHugeist,

Zeos7.1-alpha branches_ testing_R2172:
http://svn.code.sf.net/p/zeoslib/code-0 ... sting-7.1/
compiles and runs on (I have tested):

- D2006,
- D2007 -> C++,
- DXE2 32/64 -> C++(32),
- Lazarus Windows7-64 1.1.0/fpc 2.7.1 32/64 (CodeTyphon ver 4.00),
(On Linux, I have not tried yet)

(Firebird 2.5.3, MySQL 5.5.18, MariaDB 5.5.28, PostgreSQL 9.2.1, MSSQL 2008 R2 Express, Oracle Database Express Edition 11g Release 2).

Why try to use Catalog (in TZConnection) for Oracle causes AV?!

Michal

Posted: 14.02.2013, 14:50
by miab3
EgonHugeist,

Arnaud Bouchez compared the performance of several libraries, including ZEOS 7.0.3:
http://blog.synopse.info/post/2013/02/1 ... RMot-s-ORM
Is not bad but you can see that the missing batch insert in ZEOS.

Watch the Catalog for Oracle, about which I wrote in the previous post?

Michal

Posted: 15.02.2013, 10:40
by EgonHugeist
miab3,

uh that looks like a great statistic! I'll register and start some contacts..
Watch the Catalog for Oracle, about which I wrote in the previous post?
Oh i've overlooked your hint. Well i'll make a test and check the reason for this nasty AV.

Posted: 21.02.2013, 13:13
by EgonHugeist
miab3,

iv'e started to optimize and support Synopse..
Is not bad but you can see that the missing batch insert in ZEOS.
Well that's true.
Why try to use Catalog (in TZConnection) for Oracle causes AV?!
Can you provide an example? I can't reproduce it...

Posted: 21.02.2013, 14:44
by miab3
EgonHugeist,

After press Catalog ComboBox in designtime I get (in attached):
The same thing killing Lazarus environment.

Michal

Posted: 22.02.2013, 12:04
by EgonHugeist
miab3,

patch done R2188 \testing-7.1

Thanks.

Now i'm thinking about redesigning the PropertyEditor. Oracle f.e. dosn't support Catalogs, but Schemas. MySQL, FB equals here. Postgre supports both. I din't test it yet but the logic tells me you wont see the oracle Schemas now. I've started a redisign but this means fixing some more MetaInformations which are present since years. This is a problem.

Proposal for a smarter way:

Code: Select all

procedure TZCatalogPropertyEditor.GetValueList(List: TStrings);
var
  DbcConnection: IZConnection;
  Url: string;
begin
  if GetZComponent is TZAbstractConnection then
  try
    URL := (GetZComponent as TZAbstractConnection).GetURL;
    (GetZComponent as TZAbstractConnection).ShowSqlHourGlass;
    try
      DbcConnection := DriverManager.GetConnectionWithParams(Url,
        (GetZComponent as TZAbstractConnection).Properties);

      if Assigned(DbcConnection) then
        if DbcConnection.GetMetadata.GetDatabaseInfo.SupportsCatalogsInDataManipulation then
          with DbcConnection.GetMetadata.GetCatalogs do
          try
            while Next do
              List.Append(GetStringByName('TABLE_CAT'));
          finally
            Close;
          end
        else if DbcConnection.GetMetadata.GetDatabaseInfo.SupportsSchemasInDataManipulation then
          with DbcConnection.GetMetadata.GetSchemas do
          try
            while Next do
              List.Append(GetStringByName('TABLE_SCHEM'));
          finally
            Close;
          end;
    finally
      (GetZComponent as TZAbstractConnection).HideSqlHourGlass;
    end;
  except
//    raise;
  end;
end;
So the driver decides what should be returned. What do you think?

Edit: Done R2190

Posted: 22.02.2013, 19:52
by miab3
EgonHugeist,

Thanks now is fine with Catalog in Oracle.

Zeos7.1-alpha branches_ testing_R2190:
http://svn.code.sf.net/p/zeoslib/code-0 ... sting-7.1/
compiles and runs on (I have tested):

- D2006,
- D2007 -> C++,
- DXE2 32/64 -> C++(32),
- Lazarus Windows7-64 1.1.0/fpc 2.7.1 32/64 (CodeTyphon ver 4.00),
(On Linux, I have not tried yet)

(Firebird 2.5.3, MySQL 5.5.18, MariaDB 5.5.28a, PostgreSQL 9.2.1, MSSQL 2008 R2 Express, Oracle Database Express Edition 11g Release 2).

Michal