Page 19 of 44

Posted: 23.07.2012, 16:18
by EgonHugeist
miab3,

This is possible. Ludo did start the first implementations for the Nestedfields so we do actually discuss how we we implement this structure. The main issue is see is that this nesteds can have a endless full recursive structure. Also do we miss some internal enumerations to handle these type. And i was affraid the nestet datasets where supported sind BDE32 which means since Delphi3 or somithing like this. Oracle and other providers do support also other object we want to handle.

Actully did Ludo define a null lob for this type... So let's say this type is actually not supported and youve not recognized this (: . For a while ((;

You see we do what we can, Michal.

Michael

Posted: 24.07.2012, 17:14
by miab3
@EgonHugeist

After replacing in appropriate packages from ZPlainOracle9i to ZPlainOracleConstants and removing ZPlainDbLibMsSql7 and ZPlainDbLibSybaseAse125
Zeos7testing_1583 compiles and runs on D2006, DXE2 32/64, LazarusWin1.1.0/fpc 2.7.1 32/64.

(DXE2 still generated an error when I try open the Oracle table AQ$_QUEUES)

Michal

Posted: 24.07.2012, 19:55
by ludob
@miab3

is there an ora-something or other error message that comes with the exception? I don't have dxe2 so I can't test. Is the error on win32?

Ludo

Posted: 24.07.2012, 20:03
by miab3
@ludob

I wrote about it three posts before (with a picture attached):

http://zeos.firmos.at/viewtopic.php?t=3 ... &start=269

line 306:

CheckOracleError(FPlainDriver, FErrorHandle,
FPlainDriver.ObjectPin(Connection.GetConnectionHandle, FErrorHandle, ptype, nil,
OCI_PIN_ANY, OCI_DURATION_SESSION, OCI_LOCK_NONE,
@addr_tdo)
,lcExecute, FSQL);

Michal

Posted: 24.07.2012, 22:36
by EgonHugeist
@ludob,

got the same Result. Wondering that i have this with D7 and XE but not with D2007.
But like i wrote Michal before, we actually do discuss the "Howto" and actually nested tables are not supported..

Michael

Posted: 25.07.2012, 08:56
by miab3
@EgonHugeist

Michael,

About:
http://zeosbugs.firmos.at/view.php?id=263

Why have you founded the first column is integer type?
http://www.sqlite.org/faq.html#q3

Michal

Posted: 25.07.2012, 09:51
by EgonHugeist
miab3,

Michael, thank you for pointing me to the documentation. But isn't this self explainatory?
IF a type is defined like TEXT, Char, Varchar then this column is a strng value for the PrimaryKey on the other hand if nothing is defined it is an Integer. I got this results also on debugging in various modes, Michal.

So the patch is right, i'm sure.

Michael

Posted: 25.07.2012, 10:39
by miab3
@EgonHugeist

I did not know this about SQLite, thanks.

Zeos7testing_1590 compiles and runs on D2006, DXE2 32/64, LazarusWin1.1.0/fpc 2.7.1 32/64. (With a small exception on Oracle AQ$_QUEUES)

Michal

Posted: 25.07.2012, 11:43
by EgonHugeist
miab3,

Don't worry about SQLite knowledge. SQLite is out of al rules of the SQL standarts. Terrible but light weight engine and easy to portate.. Curious to deveop the support.

Thank you again for checking the packages.

Michael

Posted: 25.07.2012, 11:56
by miab3
@EgonHugeist

Michael,
Light but not for ZEOS.
I recall that for SQLite does not fetch limiting in ZEOS. To open a table in dataset takes time equal to the load needed for the entire table.
Thus, for table with 1 million records takes 15-30 seconds to open.

Michal

Posted: 25.07.2012, 12:43
by EgonHugeist
miab3,

again right. As far is i know do we use FetchAll for SQLite. Then the whole table is fuffered. I personally di never play with this db. So i can't say if this is an issue of SQLite or Zeos(FetchAll).

I only fixed all lately reported leaks and do run the suites again an again. Michal actually we do discuss about the Mantis reports. Some of them are surely totaly outdated. Hm but have not the time to create all tests for all issues on the bugtracker. Also are some in the forum to find. Can you help us here? What do you propose we should do with such veeerrry old reports?

Michael

Posted: 25.07.2012, 12:58
by miab3
@EgonHugeist

Michael,
I wrote about it.
On the main portal page Zeoslib put an extensive note with the current date on the current status of the project with links.
A report bugs outdated guide for this entry and the local forum.

Michal

Posted: 25.07.2012, 23:49
by miab3
@EgonHugeist

Michael,
Lazarus does not know GetDetailDataSets ()

Michal

Posted: 26.07.2012, 07:37
by EgonHugeist
miab3,

Michal, thank you for that hint. I reverted this patch and will it improve otherwise. R1596 The purpose was this:

Code: Select all

procedure TZTestMasterDetailCase.TestClientDatasetWithForeignKey;
var
  SQLMonitor: TZSQLMonitor;
  CommitCount, I: Integer;

begin
  SQLMonitor := TZSQLMonitor.Create(nil);
  SQLMonitor.Active := True;
  MasterQuery.SQL.Text := 'SELECT * FROM department ORDER BY dep_id';
  MasterQuery.Open;

  DetailQuery.SQL.Text := 'SELECT * FROM people';
  DetailQuery.MasterSource := MasterDataSource;
  DetailQuery.MasterFields := 'dep_id';
  DetailQuery.LinkedFields := 'p_dep_id';
  DetailQuery.Open;
  CommitCount := 0;
  try
    MasterQuery.Append;
    MasterQuery.FieldByName('dep_id').AsInteger := TestRowID;
    MasterQuery.FieldByName('dep_name').AsString := 'öäüüäö';
    MasterQuery.FieldByName('dep_shname').AsString := 'abc';
    MasterQuery.FieldByName('dep_address').AsString := 'A adress of öäüüäö';
    CheckEquals(True, (MasterQuery.State = dsInsert), 'MasterQuery Insert-State');

    DetailQuery.Append;
    DetailQuery.FieldByName('p_id').AsInteger := TestRowID;
    DetailQuery.FieldByName('p_dep_id').AsInteger := TestRowID;
    DetailQuery.FieldByName('p_name').AsString := 'üäööäü';
    DetailQuery.FieldByName('p_begin_work').AsDateTime := now;
    DetailQuery.FieldByName('p_end_work').AsDateTime := now;
    DetailQuery.FieldByName('p_picture').AsString := '';
    DetailQuery.FieldByName('p_resume').AsString := '';
    DetailQuery.FieldByName('p_redundant').AsInteger := 5;
    CheckEquals(True, (DetailQuery.State = dsInsert), 'MasterQuery Insert-State');

    MasterQuery.Post;

    CheckEquals(True, (MasterQuery.State = dsBrowse), 'MasterQuery Browse-State');
    CheckEquals(True, (DetailQuery.State = dsBrowse), 'DetailQuery Browse-State');

    for i := 0 to SQLMonitor.TraceCount -1 do
      if SQLMonitor.TraceList[i].Category = lcTransaction then
        if Pos('COMMIT', UpperCase(SQLMonitor.TraceList[i].Message)) > 0 then
          Inc(CommitCount);
    CheckEquals(1, CommitCount, 'CommitCount');
  finally
    MasterQuery.SQL.Text := 'delete from people where p_id = '+IntToStr(TestRowID);
    MasterQuery.ExecSQL;
    MasterQuery.SQL.Text := 'delete from department where dep_id = '+IntToStr(TestRowID);
    MasterQuery.ExecSQL;
    SQLMonitor.Free;
  end;
end;
Here i set MasterDetail-Relations and want to update all of then. Table department and people have a ForeignKey constraint. So we must update the Master first on the other hand we only get exceptions.

Do you know more about the ClientDataSet rules? Should this be possible? And are the more then one Transaction allowed?

Michael

Posted: 26.07.2012, 14:26
by ludob
@miab3.

Sorry. I wasn't logged in when looking at the thread and had no idea there was a picture attached. Something I need to remember;)

Parameter 7 is a enumerator and passed on as ub2. I wonder if this is not again the {$Z+} issue. Do you have the latest Zeos.inc that sets {$Z+} for all Delphi configs on line 188?