z'y va il est nul son patch, je prefere le notre.
on t'attend
At 10:12 21/01/2002 +0100, you wrote:
>Salut,
>
> Bon je m'occupe du merge tout de suite et je vous l'envoi. Juste pour
>info, il y avait �a sur la mailing liste, il y a pas tr�s longtemps.
>
> C'est maintenant merg� dans Castor. On peut aussi le r�cup�rer
>facilement si �a nous int�resse avec le diff en fin de ce mail.
>
>Florian.
>
>PS: le coup des 28 premiers caracteres, c'est bon ?
>
>Matthew Baird a �crit :
> >
> > Hi, I reported a bug a while ago that affected Oracle users when their
> table
> > lengths got close to 30 (limit in oracle). The buildTableAlias routine in
> > parsetreewalker would append an underscore and a number (dependant on how
> > many tables in your query). This had a chance of making your table alias
> > name longer than 30 characters which would cause failures in Oracle.
> >
> > I played around with making this an 'if-oracle do this' type patch, but no
> > luck. Maybe in the future. For now, this patch does the following:
> >
> > - check the name + the _ + the index is not longer than 30
> > - if so, truncate the tableName by the approprite number of characters
> > - add the _ and the number to the end of the truncated table name.
> >
> > this should work in all cases, and only has the side effect that if you
> have
> > a set of long table names that only differ in the characters AFTER the ~28
> > characters, you will lose that data (only affects read-ability of query,
> > query will still execute correctly).
> >
> > We've been using this patch in production (with both SQL Server and Oracle
> > and 300+ tables.) for 2 months with no problems.
> >
> > following is the diff -u just the way Thomas likes it.
> >
> > thanks,
> > Matthew
> >
> > --- ParseTreeWalker.java.orig Mon Dec 10 06:16:00 2001
> > +++ ParseTreeWalker.java Mon Dec 10 06:16:00 2001
> > @@ -101,6 +101,7 @@
> > public static final int DEPENDANT_OBJECT_VALUE = 5;
> > public static final int DEPENDANT_VALUE = 6;
> >
> > + public static final int MAX_TABLE_LENGTH = 30;
> >
> > /**
> > * Creates a new parse tree walker. Which checks the tree for errors,
> > and
> > @@ -873,6 +874,20 @@
> > } else {
> > index = i.intValue();
> > }
> > + // fix for oracle support. If we have a 30 character table name,
> > adding
> > + // anything to it (_#) will cause it to be too long and will
> make
> > oracle
> > + // barf. the length we are trying to evaluate is:
> > + // length of the table name + the length of the index number we
> > are using
> > + // + the _ character.
> > + String stringIndex = String.valueOf(index);
> > + if(tableAlias.length() + stringIndex.length() + 1 >
> > MAX_TABLE_LENGTH) {
> > + // use a substring of the original table name, rather than
> > the table alias
> > + // because if we truncate the table alias it could become
> > "ununique"
> > + // (by truncating the _# we add) by truncating the table
> name
> > + // beforehand we are guaranteed uniqueness as long as the
> > index is
> > + // not reused.
> > + tableAlias = tableAlias.substring(MAX_TABLE_LENGTH -
> > (stringIndex.length() + 1));
> > + }
> > // If table name contains '.', it should be replaced, since such
> > names aren't allowed for aliases
> > tableAlias = tableAlias.replace('.', '_') + "_" + index;
> > }
> > @@ -941,7 +956,7 @@
> > if ( i > 1 ) {
> > manyTableAlias = buildTableAlias( manyTableAlias,
> path,
> > i - 1 );
> > sourceTableAlias = buildTableAlias( sourceTableAlias,
> > path, i - 1 );
> > - }
> > + }
> >
> > _queryExpr.addInnerJoin( sourceClass.getTableName(),
> > identity.getSQLName(),
> >
> > --
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> > unsubscribe castor-dev
>
>-----------------------------------------------------------
>If you wish to unsubscribe from this mailing, send mail to
>[EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
@+
--
manu
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev