Hi Jakob,
the code changes seem to work well. Thank you very much. I'll tell if
further problems occur.
Thank you for your help,
Peter
> hi peter,
> please replace the method addJoin in SqlQueryStatement with the following:
> private void addJoin(TableAlias left, Object[] leftKeys, TableAlias
> right,
> Object[] rightKeys, boolean outer, String name)
> {
> TableAlias extAlias, rightCopy;
> left.addJoin(new Join(left, leftKeys, right, rightKeys, outer,
> name));
> // build join between left and extents of right
> if (right.hasExtents())
> {
> for (int i = 0; i < right.extents.size(); i++)
> {
> extAlias = (TableAlias) right.extents.get(i);
> FieldDescriptor[] extKeys =
> getExtentFieldDescriptors(extAlias,
> (FieldDescriptor[])rightKeys);
> left.addJoin(new Join(left, leftKeys, extAlias, extKeys,
> true,
> name));
> }
> }
> // we need to copy the alias on the right for each extent on the
> left
> if (left.hasExtents())
> {
> for (int i = 0; i < left.extents.size(); i++)
> {
> extAlias = (TableAlias) left.extents.get(i);
> FieldDescriptor[] extKeys =
> getExtentFieldDescriptors(extAlias,
> (FieldDescriptor[])leftKeys);
> rightCopy = right.copy("C" + i);
> // copies are treated like normal extents
> right.extents.add(rightCopy);
> right.extents.addAll(rightCopy.extents);
> addJoin(extAlias, extKeys, rightCopy ,rightKeys, true
> ,name);
> }
> }
> }
> /**
> * Get the FieldDescriptors of the extent based on the
> FieldDescriptors of
> the parent
> * @param extAlias
> * @param fds
> * @return
> */
> private FieldDescriptor[] getExtentFieldDescriptors(TableAlias
> extAlias,
> FieldDescriptor[] fds)
> {
> FieldDescriptor[] result = new FieldDescriptor[fds.length];
> for (int i = 0; i < fds.length; i++)
> {
> result[i] =
> extAlias.cld.getFieldDescriptorByName(fds[i].getAttributeName());
> }
> return result;
> }
> getExtentFieldDescriptors is new and tries to get the correct
> fieldDescriptors
> please report any problems asap.
> hth
> jakob
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]