Hello Elke,
You're right, on 7.6.0.37 it works correctly.
Thank you, Dusan
--
Dusan Kolesar
Helsinska 19
040 13 Kosice
Slovakia
e-mail primary : d.kolesar@gmail.com
e-mail alternative : d.kolesar@centrum.sk
ICQ# : 160507424
On Tue, 24 Jul 2007 11:53:55 +0200, Zietlow, Elke
wrote:
> Hi, > > here the explanation. > - In case of a join resultrows are physically build. > - The maximum length of physical rows in version 7.6 is 8088. > - Because of your value (table1-column, table2-column) an > intermediate resultrow would be build where both columns are in and the > function can be used for. > > As 4096 byte * 2 is longer than 8088, this intermediate resultrow causes > the trouble although the final result would not exceed the maximum > length. > > In newer 7.6-version than you use, a new join-handling is implemented, > that these intermediate resultrows do not exist in a physically stored > form --> your problem would not arise any more. > > Please check, if you can switch to the newest available version. > > Elke > SAP Labs Berlin > Sitz der Gesellschaft/Registered Office: Walldorf, Germany > > >> -----Original Message----- >> From: Dusan Kolesar [mailto:d.kolesar@gmail.com] >> Sent: Dienstag, 24. Juli 2007 11:28 >> To: MaxDB mailing list >> Subject: [LIKELY JUNK]Row too long (-2000) >> >> Hello >> I'm using MaxDb 7.6.0.34 on WinXp SP2. >> >> My DB schema is : >> CREATE TABLE logTb >> ( >> "ID" Integer NOT NULL >> DEFAULT SERIAL (1), >> "TSTAMP" Timestamp NOT NULL >> DEFAULT TIMESTAMP, >> "TYPE" Integer NOT NULL DEFAULT 1, >> "SENDER_ADDRESS" Varchar (255) ASCII NOT NULL DEFAULT '', >> "RECEIVER_ADDRESS" Varchar (255) ASCII NOT NULL DEFAULT '', >> PRIMARY KEY ("ID") >> ) >> // >> CREATE TABLE inTb >> ( >> "ID" Integer NOT NULL DEFAULT >> SERIAL (1), >> "TSTAMP" Timestamp NOT NULL DEFAULT >> TIMESTAMP, >> "LOGTB_ID" Integer NOT NULL DEFAULT -1, >> "DATA" Varchar (4096) BYTE NOT NULL, >> PRIMARY KEY ("ID"), >> FOREIGN KEY FK_LOGTB_ID ("LOGTB_ID") REFERENCES >> logTb (Id) ON DELETE SET DEFAULT >> ) >> // >> CREATE TABLE outTb >> ( >> "ID" Integer NOT NULL DEFAULT >> SERIAL (1), >> "TSTAMP" Timestamp NOT NULL DEFAULT >> TIMESTAMP, >> "LOGTB_ID" Integer NOT NULL DEFAULT -1, >> "DATA" Varchar (4096) BYTE NOT NULL, >> PRIMARY KEY ("ID"), >> FOREIGN KEY FK_LOGTB_ID ("LOGTB_ID") REFERENCES >> logTb (Id) ON DELETE SET DEFAULT >> ) >> >> when I do: >> >> select >> logTb.Id, >> Value (inTb.Data, outTb.Data) as DataMsg >> from logTb >> left join inTb on logTb.Id = inTb.LogTb_Id >> left join outTb on logTb.Id = outTb.LogTb_Id >> >> Syntax error or access violation;-2000 POS(8214) Row too long >> >> It seems that sql parser sums length of all columns listed in the >> statement. >> (Integer + Varchar (4096) BYTE + Varchar (4096) BYTE) > 8088 >> bytes (max. >> length of a table row) >> But when I use Value (Col1, Col2), then maximal length of >> this column is >> max of Col1 and Col2 length. >> >> The same is when I do: >> >> select >> logTb.Id, >> Value (Substr (inTb.Data, 1, 10), Substr (outTb.Data, 1, >> 10)) as DataMsg >> from logTb >> left join inTb on logTb.Id = inTb.LogTb_Id >> left join outTb on logTb.Id = outTb.LogTb_Id >> >> Length of Substr (Column, 1, n) is n but not Length of Column type. >> >> Is there any way how to restrict length of output columns ??? >> >> >> Thank you very much for support. >> Regards, Dusan >> >> -- >> Dusan Kolesar >> Helsinska 19 >> 040 13 Kosice >> Slovakia >> e-mail primary : d.kolesar@gmail.com >> e-mail alternative : d.kolesar@centrum.sk >> ICQ# : 160507424 >> >> -- >> MaxDB Discussion Mailing List >> For list archives: http://lists.mysql.com/maxdb >> To unsubscribe: >> http://lists.mysql.com/maxdb?unsub=elke.zietlow@sap.com
--
MaxDB Discussion Mailing List
For list archives:
http://lists.mysql.com/maxdb
To unsubscribe:
http://lists.mysql.com/maxdb?unsub=lists@pantek.com
Received on Tue Jul 24 08:43:51 2007
This archive was generated by hypermail 2.1.8
: Thu Aug 09 2007 - 19:30:27 EDT
|