libs-gdl2/EOAdaptors/Postgres95/Postgres95SQLExpression.m

706 lines
24 KiB
Mathematica
Raw Normal View History

/**
Postgres95SQLExpression.m <title>Postgres95SQLExpression</title>
Copyright (C) 2000-2002 Free Software Foundation, Inc.
Author: Mirko Viviani <mirko.viviani@rccr.cremona.it>
Date: February 2000
$Revision$
$Date$
<abstract></abstract>
This file is part of the GNUstep Database Library.
This product includes software developed by Turbocat's Development.
<license>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</license>
**/
#include "config.h"
RCS_ID("$Id$")
#ifdef GNUSTEP
2003-03-30 David Ayers <d.ayers@inode.at> * *.h/m, *.h/m): Used #include instead of depricated #import. Avoid including entire library headers. Use export macro where applicable. * EOControl/GNUmakefile: Removed EOKeyValueCodingBase.m/h and EOUndoMananger.h. Added EOArrayDataSource.m/h, EODefines.h and EODepricated.h. * EOControl/EODefines.h: Updated for GDL2 & gnustep-make. * EOControl/EODebug.h: Updated. * EOControl/EODepricated.h: Updated for current state of GDL2. ([NSObject +flushClassKeyBindings]): Added declaration. ([EOClassDescription +setDelegate:]): Added declaration. ([EOClassDescription +delegate]): Added declaration. (EOUndoManager): Moved declaration of interface here. * EOControl/EOKeyValueCoding.m ([EOClassDescription +flushClassKeyBindings]): Added empty implementation. ([NSObject takeStoredValuesFromDictionary:]): Cache EONull instance and use it instead of isKindOfClass:. * EOControl/EOEditingContext.m ([EOEditingContext +initialize]): Tidied. ([EOEditingContest -deleteObject]): Use NSUndoManager instead of EOUndoManager. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Added minor optimization tweak. * EOControl/EOClassDescription.m: Removed inactive commented code. Added private declerations of EOAccess methods to avoid compiler warnings. ([EOClassDescription +initialize]): Tidied. ([EOClassDescription -classDescriptionForClass:]): Use GSObjCName() instead of objc runtime routines. * EOControl/EOFault.m: Exchanged direct usages of ObjC runtime routines with NS/GSObjCRuntime abstraction API. ([EOFault +superclass]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -respondsToSelector:]): Ditto. ([EOFault +initialize]): Cache static class variable. ([EOFault +isKindOfClass]): Use static class variable. ([EOFault +handlerForFault:]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -dealloc]): Ditto. * EOControl/EOGenericRecord.m: ([EOGenericRecord +initialize]): Tidied. * EOControl/EOKeyComparisonQualifier.m: Tidied documentation. * EOControl/EOKeyValueQualifier.m: Ditto. * EOControl/EONSAddOns.h/m: Added declarations to surpress compiler warnings. ([NSObject -eoCompareOnName:]): Adjusted casts to surpress compiler warnings. (GSUseStrictWO451Compatibility): Added function. (GDL2GlobalLock, GDL2GlobalRecursive): Ditto. * EOControl/EONull: Remove implementations for foundation libraries without key value coding and fully rely on NSNull. Added assertions in all intance methods as instances should never be created. ([EONull +allocWithZone:]) Corrected method name so it will actually be used. * EOControl/EOSortOrdering.m ([NSArray sortedArrayUsingKeyOrderArray:]): Tidied. ([NSMutableArray sortUsingKeyOrderArray:]): Ditto. ([EONull compareAscending:]): Sync with referencs implementation. ([EONull compareDescending:]): Ditto. ([EONull compareCaseInsensitiveAscending:]): Ditto. ([EONull compareCaseInsensitiveDescending:]): Ditto. * EOAccess/EOAdaptor.h: Added comment about API compatibility. * EOAccess/EOAdaptor.m ([EOAdaptor -contexts]): Return array of adaptor contexts rather tham GC-wrapper objects containing adaptor contexts. ([EOAdaptor -databaseEncoding]): Use GSEncodingName() instead of GetEncodingName(). * EOAccess/EODatabaseContext.m ([EODatabaseContext -_turnFault:gid:editingContext:isComplete:]): Use GSObjCClass() instead of trying to access isa by dereferencing from id with incorrect member. * EOAccess/EOModel.m ([EOModel -entityNames]): Sort returned array to insure comparable output. * EOAccess/EOSQLExpression.m ([EOSQLExpression sqlStringForArrayOfQualifiers:operation:]): Added cast to surpress compiler warning. * EOAccess/EOUtilities.m ([EOObjectStoreCoordinator setModelGroup:]): Ditto. * EOAccess/EORelationship.h ([EORelationship -docComment]): Added declaration. * EOAccess/GNUmakefile: Added EODefines.h and EODepricated.h. * Tools/*.m: Use RCS_ID macro. * Tools/EOAttribute+GSDoc.h: ([EOAttribute gsdocContentWithTagName:idPtr:]): Corrected Typo. * Tools/EOModel+GSDoc.h/m: ([EOModel gsdocContentSplittedByEntities:idPtr:]): Ditto. * Tools/EORelationship+GSDoc.m: ([EORelationship gsdocContentWithTagName:idPtr:]): Change variable type to supress compiler warnings. * Tools/eoutil.m (dump): Initialize variables to supress compiler warnings. * Tools/gsdoc-model.m: Include GSCategories.h to supress compiler warnings. (main): Added cast to supress compiler warning. Fixed typo in method invocation. 2003-03-25 Stephane Corthesy <stephane@sente.ch> * EOControl/EODefines.h: Added new file for export/win32 support. * EOControl/EODepricated.h: Added new file for depricated features. * EOControl/EOControl.h: Added EOArrayDataSource.h and EODefines.h. * EOControl/EOArrayDataSource.h/m: Added new files. Some methods (<NSCoding> and qualifier bindings) are empty stubs. * EOControl/EODebug.h: Use export macro instead of explicit extern for function and symbol declarations. * EOControl/EOGlobalID.h: Ditto. * EOControl/EONull.h: Ditto. * EOControl/EOObjectStore.h: Ditto. * EOControl/EOOrQualifier.m: Replaced autorelease by AUTORELEASE and fixed typo. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Implemented. * EOControl/EONSAddOns.m: Use volatile in some exception handlers (man longjmp for more info). * EOControl/EOSortOrdering.h/m ([EOSortOrdering -copyWithZone:]): Implemented <NSCopying>. ([EOSortOrdering -encodeWithKeyValueArchiver:]): Implemented. * EOAccess/EODefines.h: Added new file for export/win32 support. * EOAccess/EODepricated.h: Added new file for depricated features. * EOAccess/EOAccess.h: Added EODefines.h. * EOAccess/EOSQLExpression.h/m: Fixed typo for EOPrimaryKeyConstraintKey. * EOAccess/EOExpressionArray.h/m: Use volatile for variables usein in exception handlers. (man longjmp for more info) * EOAccess/EODatabase.h: Use export macro instead of explicit extern for function and symbol declarations. * EOAccess/EOEntity.h: Ditto. * EOAccess/EOModel.h: Ditto. * EOAccess/EOSchemaGeneration.h: Ditto. * EOAccess/EOSQLExpression.h: Ditto. * EOAccess/EOUtilities.h: Ditto. * Tools/eoutil.m (dump): Implemented use of -postinstall option. Corrected bug when getting adaptor's expression class. Renamed symbol EOPrimaryKeyContraintsKey into EOPrimaryKeyConstraintsKey. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@16298 72102866-910b-0410-8b05-ffd578937521
2003-03-31 00:24:15 +00:00
#include <Foundation/NSUtilities.h>
#include <Foundation/NSException.h>
#else
#include <Foundation/Foundation.h>
#endif
#ifndef GNUSTEP
#include <GNUstepBase/GNUstep.h>
#include <GNUstepBase/GSCategories.h>
#endif
2003-03-30 David Ayers <d.ayers@inode.at> * *.h/m, *.h/m): Used #include instead of depricated #import. Avoid including entire library headers. Use export macro where applicable. * EOControl/GNUmakefile: Removed EOKeyValueCodingBase.m/h and EOUndoMananger.h. Added EOArrayDataSource.m/h, EODefines.h and EODepricated.h. * EOControl/EODefines.h: Updated for GDL2 & gnustep-make. * EOControl/EODebug.h: Updated. * EOControl/EODepricated.h: Updated for current state of GDL2. ([NSObject +flushClassKeyBindings]): Added declaration. ([EOClassDescription +setDelegate:]): Added declaration. ([EOClassDescription +delegate]): Added declaration. (EOUndoManager): Moved declaration of interface here. * EOControl/EOKeyValueCoding.m ([EOClassDescription +flushClassKeyBindings]): Added empty implementation. ([NSObject takeStoredValuesFromDictionary:]): Cache EONull instance and use it instead of isKindOfClass:. * EOControl/EOEditingContext.m ([EOEditingContext +initialize]): Tidied. ([EOEditingContest -deleteObject]): Use NSUndoManager instead of EOUndoManager. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Added minor optimization tweak. * EOControl/EOClassDescription.m: Removed inactive commented code. Added private declerations of EOAccess methods to avoid compiler warnings. ([EOClassDescription +initialize]): Tidied. ([EOClassDescription -classDescriptionForClass:]): Use GSObjCName() instead of objc runtime routines. * EOControl/EOFault.m: Exchanged direct usages of ObjC runtime routines with NS/GSObjCRuntime abstraction API. ([EOFault +superclass]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -respondsToSelector:]): Ditto. ([EOFault +initialize]): Cache static class variable. ([EOFault +isKindOfClass]): Use static class variable. ([EOFault +handlerForFault:]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -dealloc]): Ditto. * EOControl/EOGenericRecord.m: ([EOGenericRecord +initialize]): Tidied. * EOControl/EOKeyComparisonQualifier.m: Tidied documentation. * EOControl/EOKeyValueQualifier.m: Ditto. * EOControl/EONSAddOns.h/m: Added declarations to surpress compiler warnings. ([NSObject -eoCompareOnName:]): Adjusted casts to surpress compiler warnings. (GSUseStrictWO451Compatibility): Added function. (GDL2GlobalLock, GDL2GlobalRecursive): Ditto. * EOControl/EONull: Remove implementations for foundation libraries without key value coding and fully rely on NSNull. Added assertions in all intance methods as instances should never be created. ([EONull +allocWithZone:]) Corrected method name so it will actually be used. * EOControl/EOSortOrdering.m ([NSArray sortedArrayUsingKeyOrderArray:]): Tidied. ([NSMutableArray sortUsingKeyOrderArray:]): Ditto. ([EONull compareAscending:]): Sync with referencs implementation. ([EONull compareDescending:]): Ditto. ([EONull compareCaseInsensitiveAscending:]): Ditto. ([EONull compareCaseInsensitiveDescending:]): Ditto. * EOAccess/EOAdaptor.h: Added comment about API compatibility. * EOAccess/EOAdaptor.m ([EOAdaptor -contexts]): Return array of adaptor contexts rather tham GC-wrapper objects containing adaptor contexts. ([EOAdaptor -databaseEncoding]): Use GSEncodingName() instead of GetEncodingName(). * EOAccess/EODatabaseContext.m ([EODatabaseContext -_turnFault:gid:editingContext:isComplete:]): Use GSObjCClass() instead of trying to access isa by dereferencing from id with incorrect member. * EOAccess/EOModel.m ([EOModel -entityNames]): Sort returned array to insure comparable output. * EOAccess/EOSQLExpression.m ([EOSQLExpression sqlStringForArrayOfQualifiers:operation:]): Added cast to surpress compiler warning. * EOAccess/EOUtilities.m ([EOObjectStoreCoordinator setModelGroup:]): Ditto. * EOAccess/EORelationship.h ([EORelationship -docComment]): Added declaration. * EOAccess/GNUmakefile: Added EODefines.h and EODepricated.h. * Tools/*.m: Use RCS_ID macro. * Tools/EOAttribute+GSDoc.h: ([EOAttribute gsdocContentWithTagName:idPtr:]): Corrected Typo. * Tools/EOModel+GSDoc.h/m: ([EOModel gsdocContentSplittedByEntities:idPtr:]): Ditto. * Tools/EORelationship+GSDoc.m: ([EORelationship gsdocContentWithTagName:idPtr:]): Change variable type to supress compiler warnings. * Tools/eoutil.m (dump): Initialize variables to supress compiler warnings. * Tools/gsdoc-model.m: Include GSCategories.h to supress compiler warnings. (main): Added cast to supress compiler warning. Fixed typo in method invocation. 2003-03-25 Stephane Corthesy <stephane@sente.ch> * EOControl/EODefines.h: Added new file for export/win32 support. * EOControl/EODepricated.h: Added new file for depricated features. * EOControl/EOControl.h: Added EOArrayDataSource.h and EODefines.h. * EOControl/EOArrayDataSource.h/m: Added new files. Some methods (<NSCoding> and qualifier bindings) are empty stubs. * EOControl/EODebug.h: Use export macro instead of explicit extern for function and symbol declarations. * EOControl/EOGlobalID.h: Ditto. * EOControl/EONull.h: Ditto. * EOControl/EOObjectStore.h: Ditto. * EOControl/EOOrQualifier.m: Replaced autorelease by AUTORELEASE and fixed typo. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Implemented. * EOControl/EONSAddOns.m: Use volatile in some exception handlers (man longjmp for more info). * EOControl/EOSortOrdering.h/m ([EOSortOrdering -copyWithZone:]): Implemented <NSCopying>. ([EOSortOrdering -encodeWithKeyValueArchiver:]): Implemented. * EOAccess/EODefines.h: Added new file for export/win32 support. * EOAccess/EODepricated.h: Added new file for depricated features. * EOAccess/EOAccess.h: Added EODefines.h. * EOAccess/EOSQLExpression.h/m: Fixed typo for EOPrimaryKeyConstraintKey. * EOAccess/EOExpressionArray.h/m: Use volatile for variables usein in exception handlers. (man longjmp for more info) * EOAccess/EODatabase.h: Use export macro instead of explicit extern for function and symbol declarations. * EOAccess/EOEntity.h: Ditto. * EOAccess/EOModel.h: Ditto. * EOAccess/EOSchemaGeneration.h: Ditto. * EOAccess/EOSQLExpression.h: Ditto. * EOAccess/EOUtilities.h: Ditto. * Tools/eoutil.m (dump): Implemented use of -postinstall option. Corrected bug when getting adaptor's expression class. Renamed symbol EOPrimaryKeyContraintsKey into EOPrimaryKeyConstraintsKey. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@16298 72102866-910b-0410-8b05-ffd578937521
2003-03-31 00:24:15 +00:00
#include <EOControl/EONull.h>
#include <EOControl/EONSAddOns.h>
2003-03-30 David Ayers <d.ayers@inode.at> * *.h/m, *.h/m): Used #include instead of depricated #import. Avoid including entire library headers. Use export macro where applicable. * EOControl/GNUmakefile: Removed EOKeyValueCodingBase.m/h and EOUndoMananger.h. Added EOArrayDataSource.m/h, EODefines.h and EODepricated.h. * EOControl/EODefines.h: Updated for GDL2 & gnustep-make. * EOControl/EODebug.h: Updated. * EOControl/EODepricated.h: Updated for current state of GDL2. ([NSObject +flushClassKeyBindings]): Added declaration. ([EOClassDescription +setDelegate:]): Added declaration. ([EOClassDescription +delegate]): Added declaration. (EOUndoManager): Moved declaration of interface here. * EOControl/EOKeyValueCoding.m ([EOClassDescription +flushClassKeyBindings]): Added empty implementation. ([NSObject takeStoredValuesFromDictionary:]): Cache EONull instance and use it instead of isKindOfClass:. * EOControl/EOEditingContext.m ([EOEditingContext +initialize]): Tidied. ([EOEditingContest -deleteObject]): Use NSUndoManager instead of EOUndoManager. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Added minor optimization tweak. * EOControl/EOClassDescription.m: Removed inactive commented code. Added private declerations of EOAccess methods to avoid compiler warnings. ([EOClassDescription +initialize]): Tidied. ([EOClassDescription -classDescriptionForClass:]): Use GSObjCName() instead of objc runtime routines. * EOControl/EOFault.m: Exchanged direct usages of ObjC runtime routines with NS/GSObjCRuntime abstraction API. ([EOFault +superclass]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -respondsToSelector:]): Ditto. ([EOFault +initialize]): Cache static class variable. ([EOFault +isKindOfClass]): Use static class variable. ([EOFault +handlerForFault:]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -dealloc]): Ditto. * EOControl/EOGenericRecord.m: ([EOGenericRecord +initialize]): Tidied. * EOControl/EOKeyComparisonQualifier.m: Tidied documentation. * EOControl/EOKeyValueQualifier.m: Ditto. * EOControl/EONSAddOns.h/m: Added declarations to surpress compiler warnings. ([NSObject -eoCompareOnName:]): Adjusted casts to surpress compiler warnings. (GSUseStrictWO451Compatibility): Added function. (GDL2GlobalLock, GDL2GlobalRecursive): Ditto. * EOControl/EONull: Remove implementations for foundation libraries without key value coding and fully rely on NSNull. Added assertions in all intance methods as instances should never be created. ([EONull +allocWithZone:]) Corrected method name so it will actually be used. * EOControl/EOSortOrdering.m ([NSArray sortedArrayUsingKeyOrderArray:]): Tidied. ([NSMutableArray sortUsingKeyOrderArray:]): Ditto. ([EONull compareAscending:]): Sync with referencs implementation. ([EONull compareDescending:]): Ditto. ([EONull compareCaseInsensitiveAscending:]): Ditto. ([EONull compareCaseInsensitiveDescending:]): Ditto. * EOAccess/EOAdaptor.h: Added comment about API compatibility. * EOAccess/EOAdaptor.m ([EOAdaptor -contexts]): Return array of adaptor contexts rather tham GC-wrapper objects containing adaptor contexts. ([EOAdaptor -databaseEncoding]): Use GSEncodingName() instead of GetEncodingName(). * EOAccess/EODatabaseContext.m ([EODatabaseContext -_turnFault:gid:editingContext:isComplete:]): Use GSObjCClass() instead of trying to access isa by dereferencing from id with incorrect member. * EOAccess/EOModel.m ([EOModel -entityNames]): Sort returned array to insure comparable output. * EOAccess/EOSQLExpression.m ([EOSQLExpression sqlStringForArrayOfQualifiers:operation:]): Added cast to surpress compiler warning. * EOAccess/EOUtilities.m ([EOObjectStoreCoordinator setModelGroup:]): Ditto. * EOAccess/EORelationship.h ([EORelationship -docComment]): Added declaration. * EOAccess/GNUmakefile: Added EODefines.h and EODepricated.h. * Tools/*.m: Use RCS_ID macro. * Tools/EOAttribute+GSDoc.h: ([EOAttribute gsdocContentWithTagName:idPtr:]): Corrected Typo. * Tools/EOModel+GSDoc.h/m: ([EOModel gsdocContentSplittedByEntities:idPtr:]): Ditto. * Tools/EORelationship+GSDoc.m: ([EORelationship gsdocContentWithTagName:idPtr:]): Change variable type to supress compiler warnings. * Tools/eoutil.m (dump): Initialize variables to supress compiler warnings. * Tools/gsdoc-model.m: Include GSCategories.h to supress compiler warnings. (main): Added cast to supress compiler warning. Fixed typo in method invocation. 2003-03-25 Stephane Corthesy <stephane@sente.ch> * EOControl/EODefines.h: Added new file for export/win32 support. * EOControl/EODepricated.h: Added new file for depricated features. * EOControl/EOControl.h: Added EOArrayDataSource.h and EODefines.h. * EOControl/EOArrayDataSource.h/m: Added new files. Some methods (<NSCoding> and qualifier bindings) are empty stubs. * EOControl/EODebug.h: Use export macro instead of explicit extern for function and symbol declarations. * EOControl/EOGlobalID.h: Ditto. * EOControl/EONull.h: Ditto. * EOControl/EOObjectStore.h: Ditto. * EOControl/EOOrQualifier.m: Replaced autorelease by AUTORELEASE and fixed typo. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Implemented. * EOControl/EONSAddOns.m: Use volatile in some exception handlers (man longjmp for more info). * EOControl/EOSortOrdering.h/m ([EOSortOrdering -copyWithZone:]): Implemented <NSCopying>. ([EOSortOrdering -encodeWithKeyValueArchiver:]): Implemented. * EOAccess/EODefines.h: Added new file for export/win32 support. * EOAccess/EODepricated.h: Added new file for depricated features. * EOAccess/EOAccess.h: Added EODefines.h. * EOAccess/EOSQLExpression.h/m: Fixed typo for EOPrimaryKeyConstraintKey. * EOAccess/EOExpressionArray.h/m: Use volatile for variables usein in exception handlers. (man longjmp for more info) * EOAccess/EODatabase.h: Use export macro instead of explicit extern for function and symbol declarations. * EOAccess/EOEntity.h: Ditto. * EOAccess/EOModel.h: Ditto. * EOAccess/EOSchemaGeneration.h: Ditto. * EOAccess/EOSQLExpression.h: Ditto. * EOAccess/EOUtilities.h: Ditto. * Tools/eoutil.m (dump): Implemented use of -postinstall option. Corrected bug when getting adaptor's expression class. Renamed symbol EOPrimaryKeyContraintsKey into EOPrimaryKeyConstraintsKey. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@16298 72102866-910b-0410-8b05-ffd578937521
2003-03-31 00:24:15 +00:00
#include <EOControl/EODebug.h>
#include <EOAccess/EOAttribute.h>
#include <EOAccess/EOEntity.h>
#include <EOAccess/EOModel.h>
2003-03-30 David Ayers <d.ayers@inode.at> * *.h/m, *.h/m): Used #include instead of depricated #import. Avoid including entire library headers. Use export macro where applicable. * EOControl/GNUmakefile: Removed EOKeyValueCodingBase.m/h and EOUndoMananger.h. Added EOArrayDataSource.m/h, EODefines.h and EODepricated.h. * EOControl/EODefines.h: Updated for GDL2 & gnustep-make. * EOControl/EODebug.h: Updated. * EOControl/EODepricated.h: Updated for current state of GDL2. ([NSObject +flushClassKeyBindings]): Added declaration. ([EOClassDescription +setDelegate:]): Added declaration. ([EOClassDescription +delegate]): Added declaration. (EOUndoManager): Moved declaration of interface here. * EOControl/EOKeyValueCoding.m ([EOClassDescription +flushClassKeyBindings]): Added empty implementation. ([NSObject takeStoredValuesFromDictionary:]): Cache EONull instance and use it instead of isKindOfClass:. * EOControl/EOEditingContext.m ([EOEditingContext +initialize]): Tidied. ([EOEditingContest -deleteObject]): Use NSUndoManager instead of EOUndoManager. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Added minor optimization tweak. * EOControl/EOClassDescription.m: Removed inactive commented code. Added private declerations of EOAccess methods to avoid compiler warnings. ([EOClassDescription +initialize]): Tidied. ([EOClassDescription -classDescriptionForClass:]): Use GSObjCName() instead of objc runtime routines. * EOControl/EOFault.m: Exchanged direct usages of ObjC runtime routines with NS/GSObjCRuntime abstraction API. ([EOFault +superclass]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -respondsToSelector:]): Ditto. ([EOFault +initialize]): Cache static class variable. ([EOFault +isKindOfClass]): Use static class variable. ([EOFault +handlerForFault:]): Ditto. ([EOFault +targetClassForFault:]): Ditto. ([EOFault -dealloc]): Ditto. * EOControl/EOGenericRecord.m: ([EOGenericRecord +initialize]): Tidied. * EOControl/EOKeyComparisonQualifier.m: Tidied documentation. * EOControl/EOKeyValueQualifier.m: Ditto. * EOControl/EONSAddOns.h/m: Added declarations to surpress compiler warnings. ([NSObject -eoCompareOnName:]): Adjusted casts to surpress compiler warnings. (GSUseStrictWO451Compatibility): Added function. (GDL2GlobalLock, GDL2GlobalRecursive): Ditto. * EOControl/EONull: Remove implementations for foundation libraries without key value coding and fully rely on NSNull. Added assertions in all intance methods as instances should never be created. ([EONull +allocWithZone:]) Corrected method name so it will actually be used. * EOControl/EOSortOrdering.m ([NSArray sortedArrayUsingKeyOrderArray:]): Tidied. ([NSMutableArray sortUsingKeyOrderArray:]): Ditto. ([EONull compareAscending:]): Sync with referencs implementation. ([EONull compareDescending:]): Ditto. ([EONull compareCaseInsensitiveAscending:]): Ditto. ([EONull compareCaseInsensitiveDescending:]): Ditto. * EOAccess/EOAdaptor.h: Added comment about API compatibility. * EOAccess/EOAdaptor.m ([EOAdaptor -contexts]): Return array of adaptor contexts rather tham GC-wrapper objects containing adaptor contexts. ([EOAdaptor -databaseEncoding]): Use GSEncodingName() instead of GetEncodingName(). * EOAccess/EODatabaseContext.m ([EODatabaseContext -_turnFault:gid:editingContext:isComplete:]): Use GSObjCClass() instead of trying to access isa by dereferencing from id with incorrect member. * EOAccess/EOModel.m ([EOModel -entityNames]): Sort returned array to insure comparable output. * EOAccess/EOSQLExpression.m ([EOSQLExpression sqlStringForArrayOfQualifiers:operation:]): Added cast to surpress compiler warning. * EOAccess/EOUtilities.m ([EOObjectStoreCoordinator setModelGroup:]): Ditto. * EOAccess/EORelationship.h ([EORelationship -docComment]): Added declaration. * EOAccess/GNUmakefile: Added EODefines.h and EODepricated.h. * Tools/*.m: Use RCS_ID macro. * Tools/EOAttribute+GSDoc.h: ([EOAttribute gsdocContentWithTagName:idPtr:]): Corrected Typo. * Tools/EOModel+GSDoc.h/m: ([EOModel gsdocContentSplittedByEntities:idPtr:]): Ditto. * Tools/EORelationship+GSDoc.m: ([EORelationship gsdocContentWithTagName:idPtr:]): Change variable type to supress compiler warnings. * Tools/eoutil.m (dump): Initialize variables to supress compiler warnings. * Tools/gsdoc-model.m: Include GSCategories.h to supress compiler warnings. (main): Added cast to supress compiler warning. Fixed typo in method invocation. 2003-03-25 Stephane Corthesy <stephane@sente.ch> * EOControl/EODefines.h: Added new file for export/win32 support. * EOControl/EODepricated.h: Added new file for depricated features. * EOControl/EOControl.h: Added EOArrayDataSource.h and EODefines.h. * EOControl/EOArrayDataSource.h/m: Added new files. Some methods (<NSCoding> and qualifier bindings) are empty stubs. * EOControl/EODebug.h: Use export macro instead of explicit extern for function and symbol declarations. * EOControl/EOGlobalID.h: Ditto. * EOControl/EONull.h: Ditto. * EOControl/EOObjectStore.h: Ditto. * EOControl/EOOrQualifier.m: Replaced autorelease by AUTORELEASE and fixed typo. * EOControl/EOQualifier.m ([NSArray -filteredArrayUsingQualifier:]): Implemented. * EOControl/EONSAddOns.m: Use volatile in some exception handlers (man longjmp for more info). * EOControl/EOSortOrdering.h/m ([EOSortOrdering -copyWithZone:]): Implemented <NSCopying>. ([EOSortOrdering -encodeWithKeyValueArchiver:]): Implemented. * EOAccess/EODefines.h: Added new file for export/win32 support. * EOAccess/EODepricated.h: Added new file for depricated features. * EOAccess/EOAccess.h: Added EODefines.h. * EOAccess/EOSQLExpression.h/m: Fixed typo for EOPrimaryKeyConstraintKey. * EOAccess/EOExpressionArray.h/m: Use volatile for variables usein in exception handlers. (man longjmp for more info) * EOAccess/EODatabase.h: Use export macro instead of explicit extern for function and symbol declarations. * EOAccess/EOEntity.h: Ditto. * EOAccess/EOModel.h: Ditto. * EOAccess/EOSchemaGeneration.h: Ditto. * EOAccess/EOSQLExpression.h: Ditto. * EOAccess/EOUtilities.h: Ditto. * Tools/eoutil.m (dump): Implemented use of -postinstall option. Corrected bug when getting adaptor's expression class. Renamed symbol EOPrimaryKeyContraintsKey into EOPrimaryKeyConstraintsKey. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@16298 72102866-910b-0410-8b05-ffd578937521
2003-03-31 00:24:15 +00:00
#include <EOAccess/EOSchemaGeneration.h>
#include "Postgres95SQLExpression.h"
#include "Postgres95Adaptor.h"
#include "Postgres95Values.h"
#include "Postgres95Compatibility.h"
* EOAccess/EOAccessFault.m: Include privat headers locally. * EOAccess/EOAdaptor.m: Ditto. * EOAccess/EOAdaptorChannel.m: Ditto. * EOAccess/EOAdaptorContext.m: Ditto. * EOAccess/EOAttribute.m: Ditto. * EOAccess/EODatabaseChannel.m: Ditto. * EOAccess/EODatabaseContext.m: Ditto. * EOAccess/EODatabaseOperation.m: Ditto. * EOAccess/EOModel.m: Ditto. * EOAccess/EORelationship.m: Ditto. * EOAccess/EOSQLExpression.m: Ditto. * EOAccess/EOSQLQualifier.m: Ditto. * EOAccess/EOEntity.h: Remove declarations of privat methods. Reorder declaraions. (+[entity], +[entityWithPropertyList:owner:]): Deprecate. (-[sharedObjectFetchSpecificationNames]): New method. (-[setSharedObjectFetchSpecificationsByName:]: Ditto. (-[addSharedObjectFetchSpecificationByName:]: Ditto. (-[removeSharedObjectFetchSpecificationByName:]: Ditto. * EOAccess/EOEntityPriv.h: Add declarations of privat methods. Reorder declarations. * EOAccess/EOEntity.m: Reorder implementations according to headers. Include privat headers locally. (+[entity], +[entityWithPropertyList:owner:]): Deprecate. (-[sharedObjectFetchSpecificationNames]): New method. (-[setSharedObjectFetchSpecificationsByName:]: Ditto. (-[addSharedObjectFetchSpecificationByName:]: Ditto. (-[removeSharedObjectFetchSpecificationByName:]: Ditto. * EOAccess/EOEntity.m: Adapt usage of deprecated -[entity...] and privat methods. * EOAccess/EOModel.m: Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m: Ditto. * TODO: Add comment. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@19772 72102866-910b-0410-8b05-ffd578937521
2004-07-23 18:33:29 +00:00
/* These methods are undocumented but exist in GDL2 and WO4.5.
Ayers: Review (Don't rely on them) */
@interface EOEntity (Undocumented)
- (EORelationship *)relationshipForPath: (NSString *)path;
@end
@interface EOSQLExpression (PrivatUndocumented)
- (NSString*) _aliasForRelatedAttribute: (EOAttribute *)attr
relationshipPath: (NSString *)keyPath;
@end
* EOAccess/EOAccessFault.m: Include privat headers locally. * EOAccess/EOAdaptor.m: Ditto. * EOAccess/EOAdaptorChannel.m: Ditto. * EOAccess/EOAdaptorContext.m: Ditto. * EOAccess/EOAttribute.m: Ditto. * EOAccess/EODatabaseChannel.m: Ditto. * EOAccess/EODatabaseContext.m: Ditto. * EOAccess/EODatabaseOperation.m: Ditto. * EOAccess/EOModel.m: Ditto. * EOAccess/EORelationship.m: Ditto. * EOAccess/EOSQLExpression.m: Ditto. * EOAccess/EOSQLQualifier.m: Ditto. * EOAccess/EOEntity.h: Remove declarations of privat methods. Reorder declaraions. (+[entity], +[entityWithPropertyList:owner:]): Deprecate. (-[sharedObjectFetchSpecificationNames]): New method. (-[setSharedObjectFetchSpecificationsByName:]: Ditto. (-[addSharedObjectFetchSpecificationByName:]: Ditto. (-[removeSharedObjectFetchSpecificationByName:]: Ditto. * EOAccess/EOEntityPriv.h: Add declarations of privat methods. Reorder declarations. * EOAccess/EOEntity.m: Reorder implementations according to headers. Include privat headers locally. (+[entity], +[entityWithPropertyList:owner:]): Deprecate. (-[sharedObjectFetchSpecificationNames]): New method. (-[setSharedObjectFetchSpecificationsByName:]: Ditto. (-[addSharedObjectFetchSpecificationByName:]: Ditto. (-[removeSharedObjectFetchSpecificationByName:]: Ditto. * EOAccess/EOEntity.m: Adapt usage of deprecated -[entity...] and privat methods. * EOAccess/EOModel.m: Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m: Ditto. * TODO: Add comment. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@19772 72102866-910b-0410-8b05-ffd578937521
2004-07-23 18:33:29 +00:00
@implementation Postgres95SQLExpression
+ (NSString *)formatValue: (id)value
forAttribute: (EOAttribute *)attribute
{
NSString *formatted = nil;
NSString *externalType;
NSMutableString *string;
const char *tempString;
int i, dif;
EOFLOGObjectFnStart();
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"value=%@ class=%@", value,
[value class]);
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"[EONull null] %p=%@ [EONull null] class=%@",
[EONull null],
[EONull null],
[[EONull null] class]);
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"[value isEqual:[EONull null]]=%s",
([value isEqual: [EONull null]] ? "YES" : "NO"));
externalType = [attribute externalType];
if (!value)
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"NULL case - value=%@ class=%@",
value, [value class]);
formatted = @"NULL";
}
else if ([value isEqual: [EONull null]])
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"EONULL case - value=%@ class=%@",
value, [value class]);
formatted = [value sqlString];
}
else if ([externalType hasPrefix: @"int"]
|| [externalType hasPrefix: @"bigint"])
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"int case - value=%@ class=%@",
value, [value class]);
formatted = [NSString stringWithFormat: @"%@", value];
// value was for example 0 length string
if ([formatted length] == 0)
formatted = @"NULL";
}
else if ([externalType hasPrefix: @"float"])
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"float case - value=%@ class=%@",
value, [value class]);
formatted = [NSString stringWithFormat: @"%@", value];
// value was for example 0 length string
if ([formatted length] == 0)
formatted=@"NULL";
}
else if ([externalType hasPrefix: @"bool"])
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"BOOL case - value=%@ class=%@",
value, [value class]);
if ([value isKindOfClass: [NSNumber class]] == YES)
{
BOOL boolValue = [value boolValue];
if (boolValue == NO)
formatted = @"'f'";
else
formatted = @"'t'";
}
else
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"BOOL case/NSString - value=%@ class=%@",
value, [value class]);
formatted = [NSString stringWithFormat: @"'%@'", value];
// value was for example 0 length string
if ([formatted length] == 0)
formatted = @"NULL";
}
}
else if ([externalType isEqualToString: @"oid"])
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"OID case - value=%@ class=%@",
value, [value class]);
formatted = [NSString stringWithFormat: @"%@", value];
// value was for example 0 length string
if ([formatted length] == 0)
formatted=@"NULL";
}
else if ([externalType isEqualToString: @"money"])
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"Money case - value=%@ class=%@",
value, [value class]);
formatted = [NSString stringWithFormat: @"'$%@'", value];
// value was for example 0 length string
if ([formatted length] == 3) // only '$'
formatted = @"NULL";
}
else if (([externalType isEqualToString: @"abstime"])
/*|| ([externalType isEqualToString: @"datetime"])*//* stephane@sente.ch: datetime does not exist */
|| ([externalType isEqualToString: @"timestamp"]))
{
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"Time case - value=%@ class=%@",
value, [value class]);
if ([[value description] length] == 0)
{
NSWarnLog(@"empty description for %p %@ of class %@",
value, value, [value class]);
}
// Value can also be a string...
if ([value isKindOfClass:[NSDate class]])
{
formatted = [NSString stringWithFormat: @"'%@'",
[value
descriptionWithCalendarFormat:
[NSCalendarDate postgres95Format]//@"%d/%m/%Y %H:%M:%S"
timeZone: nil
locale: nil]];
}
else
formatted = [NSString stringWithFormat: @"'%@'",value];
}
else if ([externalType isEqualToString: @"bytea"])
{
unsigned char *escapedString;
size_t newLength;
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"bytea case - value=%@ class=%@",
value, [value class]);
escapedString = PQescapeBytea ((unsigned char *)[value bytes],
[value length],
&newLength);
/* Note that the value returned in newLength is unreliable. */
formatted = [NSString stringWithFormat: @"'%s'", escapedString];
if (escapedString)
{
PQfreemem (escapedString);
}
}
else
{
int length = 0;
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"other case - value=%@ class=%@",
value, [value class]);
string = [NSMutableString stringWithFormat: @"%@", value];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"string %p='%@'",
string, string);
length=[string cStringLength];
tempString = [string cString];
2003-06-26 Manuel Guesdon <mguesdon@orange-concept.com> * config.h.in: o added EMIT_TODO control * EOAccess/EOAccessFault.m: o commented debug logs * EOAccess/EODatabaseContext.m: o more information in asserts o asserts o fix in -relayPrimaryKey:object:entity: for nil 1:1 relationship value o add -forgetSnapshotForGlobalID call in -refaultObject:withGlobalID:editingContext: o add -forgetSnapshotForGlobalID database call in -forgetSnapshotForGlobalID: * EOAccess/EOEntity.m: o logs o fix in -awakeObject:fromInsertionInEditingContext: to avoid setting already present values o reverted code in -awakeObject:fromInsertionInEditingContext: My (old) tests show that we create 1: object not on mandatory property but on propagatesPrimaryKey one if someone has an example of EOF creating an object here without propagatesPrimaryKey, please send it to me. * EOAccess/EOModelGroup.m: o don't autorelease return model group in -globalModelGroup as it will crash. I haven't find why :-( o logs * EOAccess/EOSQLExpression.m: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause o add detail in sqlStringForSelector:value: exception * EOAdaptors/Postgres95/PostPostgres95Channel.m: o add more information on exceptions * EOAdaptors/Postgres95/Postgres95SQLExpression.m: o fix escaping string in -formatValue:forAttribute: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause * EOAdaptors/Postgres95/Postgres95Value.m: o Change log in +newValueForDateType:length:attribute: * EOControl/EOCheapArray.m o removed some logs * EOAccess/EOClassDescription.m: o fix in -validateForUpdate o logs * EOControl/Debug.h: o donditional define of NSEmitTODO() * EOControl/EODetailDataSource.h/.m: o added -setDetailKey: * EOControl/EOEditingContext.m o logs * EOControl/EOFetchSpecification.m o logs * EOControl/EOKeyValueCoding.m: o fix in computeSum, computeAverage * EOControl/EOQualifier.m o logs * EOControl/EOSortOrdering.m o use valueForKeyPath: instead of valueForKey: to allow sort on related objects * EOControl/EOUndoManager.h o protection of include git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@17037 72102866-910b-0410-8b05-ffd578937521
2003-06-26 08:20:30 +00:00
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"string '%@' tempString=%s",
string, tempString);
for (i = 0, dif = 0; i < length; i++)
{
2003-06-26 Manuel Guesdon <mguesdon@orange-concept.com> * config.h.in: o added EMIT_TODO control * EOAccess/EOAccessFault.m: o commented debug logs * EOAccess/EODatabaseContext.m: o more information in asserts o asserts o fix in -relayPrimaryKey:object:entity: for nil 1:1 relationship value o add -forgetSnapshotForGlobalID call in -refaultObject:withGlobalID:editingContext: o add -forgetSnapshotForGlobalID database call in -forgetSnapshotForGlobalID: * EOAccess/EOEntity.m: o logs o fix in -awakeObject:fromInsertionInEditingContext: to avoid setting already present values o reverted code in -awakeObject:fromInsertionInEditingContext: My (old) tests show that we create 1: object not on mandatory property but on propagatesPrimaryKey one if someone has an example of EOF creating an object here without propagatesPrimaryKey, please send it to me. * EOAccess/EOModelGroup.m: o don't autorelease return model group in -globalModelGroup as it will crash. I haven't find why :-( o logs * EOAccess/EOSQLExpression.m: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause o add detail in sqlStringForSelector:value: exception * EOAdaptors/Postgres95/PostPostgres95Channel.m: o add more information on exceptions * EOAdaptors/Postgres95/Postgres95SQLExpression.m: o fix escaping string in -formatValue:forAttribute: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause * EOAdaptors/Postgres95/Postgres95Value.m: o Change log in +newValueForDateType:length:attribute: * EOControl/EOCheapArray.m o removed some logs * EOAccess/EOClassDescription.m: o fix in -validateForUpdate o logs * EOControl/Debug.h: o donditional define of NSEmitTODO() * EOControl/EODetailDataSource.h/.m: o added -setDetailKey: * EOControl/EOEditingContext.m o logs * EOControl/EOFetchSpecification.m o logs * EOControl/EOKeyValueCoding.m: o fix in computeSum, computeAverage * EOControl/EOQualifier.m o logs * EOControl/EOSortOrdering.m o use valueForKeyPath: instead of valueForKey: to allow sort on related objects * EOControl/EOUndoManager.h o protection of include git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@17037 72102866-910b-0410-8b05-ffd578937521
2003-06-26 08:20:30 +00:00
switch (tempString[i])
{
case '\\':
case '\'':
[string insertString: @"\\" atIndex: dif + i];
dif++;
break;
case '_':
[string insertString: @"\\" atIndex: dif + i];
dif++;
break;
default:
break;
}
}
2003-06-26 Manuel Guesdon <mguesdon@orange-concept.com> * config.h.in: o added EMIT_TODO control * EOAccess/EOAccessFault.m: o commented debug logs * EOAccess/EODatabaseContext.m: o more information in asserts o asserts o fix in -relayPrimaryKey:object:entity: for nil 1:1 relationship value o add -forgetSnapshotForGlobalID call in -refaultObject:withGlobalID:editingContext: o add -forgetSnapshotForGlobalID database call in -forgetSnapshotForGlobalID: * EOAccess/EOEntity.m: o logs o fix in -awakeObject:fromInsertionInEditingContext: to avoid setting already present values o reverted code in -awakeObject:fromInsertionInEditingContext: My (old) tests show that we create 1: object not on mandatory property but on propagatesPrimaryKey one if someone has an example of EOF creating an object here without propagatesPrimaryKey, please send it to me. * EOAccess/EOModelGroup.m: o don't autorelease return model group in -globalModelGroup as it will crash. I haven't find why :-( o logs * EOAccess/EOSQLExpression.m: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause o add detail in sqlStringForSelector:value: exception * EOAdaptors/Postgres95/PostPostgres95Channel.m: o add more information on exceptions * EOAdaptors/Postgres95/Postgres95SQLExpression.m: o fix escaping string in -formatValue:forAttribute: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause * EOAdaptors/Postgres95/Postgres95Value.m: o Change log in +newValueForDateType:length:attribute: * EOControl/EOCheapArray.m o removed some logs * EOAccess/EOClassDescription.m: o fix in -validateForUpdate o logs * EOControl/Debug.h: o donditional define of NSEmitTODO() * EOControl/EODetailDataSource.h/.m: o added -setDetailKey: * EOControl/EOEditingContext.m o logs * EOControl/EOFetchSpecification.m o logs * EOControl/EOKeyValueCoding.m: o fix in computeSum, computeAverage * EOControl/EOQualifier.m o logs * EOControl/EOSortOrdering.m o use valueForKeyPath: instead of valueForKey: to allow sort on related objects * EOControl/EOUndoManager.h o protection of include git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@17037 72102866-910b-0410-8b05-ffd578937521
2003-06-26 08:20:30 +00:00
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"string '%@' tempString=%s",
string, tempString);
formatted = [NSString stringWithFormat: @"'%@'", string];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"formatted %p=%@",
formatted, formatted);
}
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"formatted=%@", formatted);
EOFLOGObjectFnStop();
return formatted;
}
- (NSString *)lockClause
{
return @"FOR UPDATE";
}
- (NSString *)assembleSelectStatementWithAttributes: (NSArray *)attributes
lock: (BOOL)lock
qualifier: (EOQualifier *)qualifier
fetchOrder: (NSArray *)fetchOrder
selectString: (NSString *)selectString
columnList: (NSString *)columnList
tableList: (NSString *)tableList
whereClause: (NSString *)whereClause
joinClause: (NSString *)joinClause
orderByClause: (NSString *)orderByClause
lockClause: (NSString *)lockClause
{
//OK
NSMutableString *sqlString = nil;
EOFLOGObjectFnStart();
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"selectString=%@", selectString);
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"columnList=%@", columnList);
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"tableList=%@", tableList);
sqlString = [NSMutableString stringWithFormat: @"%@ %@ FROM %@",
selectString,
columnList,
tableList];
if (whereClause && joinClause)
2003-06-26 Manuel Guesdon <mguesdon@orange-concept.com> * config.h.in: o added EMIT_TODO control * EOAccess/EOAccessFault.m: o commented debug logs * EOAccess/EODatabaseContext.m: o more information in asserts o asserts o fix in -relayPrimaryKey:object:entity: for nil 1:1 relationship value o add -forgetSnapshotForGlobalID call in -refaultObject:withGlobalID:editingContext: o add -forgetSnapshotForGlobalID database call in -forgetSnapshotForGlobalID: * EOAccess/EOEntity.m: o logs o fix in -awakeObject:fromInsertionInEditingContext: to avoid setting already present values o reverted code in -awakeObject:fromInsertionInEditingContext: My (old) tests show that we create 1: object not on mandatory property but on propagatesPrimaryKey one if someone has an example of EOF creating an object here without propagatesPrimaryKey, please send it to me. * EOAccess/EOModelGroup.m: o don't autorelease return model group in -globalModelGroup as it will crash. I haven't find why :-( o logs * EOAccess/EOSQLExpression.m: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause o add detail in sqlStringForSelector:value: exception * EOAdaptors/Postgres95/PostPostgres95Channel.m: o add more information on exceptions * EOAdaptors/Postgres95/Postgres95SQLExpression.m: o fix escaping string in -formatValue:forAttribute: o fix bug in -assembleSelectStatementWithAttributes:lock:qualifier: fetchOrder:selectString:columnList:tableList: whereClause:joinClause:orderByClause:lockClause: by adding () around where and join clause * EOAdaptors/Postgres95/Postgres95Value.m: o Change log in +newValueForDateType:length:attribute: * EOControl/EOCheapArray.m o removed some logs * EOAccess/EOClassDescription.m: o fix in -validateForUpdate o logs * EOControl/Debug.h: o donditional define of NSEmitTODO() * EOControl/EODetailDataSource.h/.m: o added -setDetailKey: * EOControl/EOEditingContext.m o logs * EOControl/EOFetchSpecification.m o logs * EOControl/EOKeyValueCoding.m: o fix in computeSum, computeAverage * EOControl/EOQualifier.m o logs * EOControl/EOSortOrdering.m o use valueForKeyPath: instead of valueForKey: to allow sort on related objects * EOControl/EOUndoManager.h o protection of include git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@17037 72102866-910b-0410-8b05-ffd578937521
2003-06-26 08:20:30 +00:00
[sqlString appendFormat: @" WHERE (%@) AND (%@)",
whereClause,
joinClause];
else if (whereClause || joinClause)
[sqlString appendFormat: @" WHERE %@",
(whereClause ? whereClause : joinClause)];
if (orderByClause)
[sqlString appendFormat: @" ORDER BY %@", orderByClause];
if (lockClause)
[sqlString appendFormat: @" %@", lockClause];
EOFLOGObjectFnStop();
return sqlString;
}
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
+ (NSArray *)createDatabaseStatementsForConnectionDictionary: (NSDictionary *)connDict
administrativeConnectionDictionary: (NSDictionary *)admConnDict
{
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
NSArray *newArray;
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
NSString *databaseName;
NSString *stmt;
EOSQLExpression *expr;
databaseName = [connDict objectForKey: @"databaseName"];
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
expr = [self expressionForString: nil];
databaseName = [expr sqlStringForSchemaObjectName: databaseName];
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
stmt = [NSString stringWithFormat:@"CREATE DATABASE %@", databaseName];
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
[expr setStatement: stmt];
newArray = [NSArray arrayWithObject: expr];
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
return newArray;
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
}
+ (NSArray *)dropDatabaseStatementsForConnectionDictionary: (NSDictionary *)connDict
administrativeConnectionDictionary: (NSDictionary *)admConnDict
{
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
NSArray *newArray;
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
NSString *databaseName;
NSString *stmt;
EOSQLExpression *expr;
databaseName = [connDict objectForKey: @"databaseName"];
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
expr = [self expressionForString: nil];
databaseName = [expr sqlStringForSchemaObjectName: databaseName];
stmt = [NSString stringWithFormat:@"DROP DATABASE %@", databaseName];
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
[expr setStatement: stmt];
newArray = [NSArray arrayWithObject: expr];
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
return newArray;
* EOAccess/EOAdaptor.h ([EOLoginPanel administrativeConnectionDictionaryForAdaptor]): Correct spelling. ([EOLoginPanel runPanelForAdaptor:validate:]): Move to EODeprecated.h. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Declared. * EOAccess/EOAdaptor.m: ([EOAdaptor adaptorWithModel:]): Reformat. ([EOAdaptor adaptorWithName:]): Do not append EOAdaptor redundantly. ([EOAdaptor _performAdministativeStatementsForSelector: connectionDictionary:administrativeConnectionDictionary:]): Implemented. ([EOAdaptor createDatabaseWithAdministrativeConnectionDictionary:]): Documented and implemented. ([EOAdaptor dropDatabaseWithAdministrativeConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanelAndValidateConnectionDictionary]): Ditto. ([EOAdaptor runLoginPanel]): Ditto. ([EOAdaptor assignExternalInfoForAttribute:]): Ditto. ([EOAdaptor assignExternalInfoForEntity]): Ditto. ([EOAdaptor assignExternalInfoForEntireModel:]): Ditto. ([EOAdaptor internalTypeForExternalType:model:]): Documented. ([EOAdaptor externalTypesWithModel]): Ditto. ([EOAdaptor assignExternalTypeForAttribute]): Ditto. ([EOLoginPanel runPanelForAdaptor:validate:allowsCreation:]): Implemented. ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAccess/EODeprecated.h ([EOLoginPanel runPanelForAdaptor:validate:]): Deprecated. * EOAdaptors/Postgres95/Postgres95Adaptor.m ([Postgres95Adaptor createDatabaseWithAdministrativeConnectionDictionary:]): Removed. ([Postgres95Adaptor dropDatabaseWithAdministrativeConnectionDictionary:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.m ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Implemented. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18589 72102866-910b-0410-8b05-ffd578937521
2004-02-12 17:09:37 +00:00
}
+ (NSArray *)dropTableStatementsForEntityGroup:(NSArray *)entityGroup
{
EOEntity *entity;
NSArray *newArray;
int version;
EOFLOGClassFnStartOrCond(@"EOSQLExpression");
entity = [entityGroup objectAtIndex: 0];
version = [[[[entity model] connectionDictionary]
objectForKey: @"databaseVersion"] parsedFirstVersionSubstring];
if (version == 0)
{
version = postgresClientVersion();
}
if (version < 70300)
{
newArray = [super dropTableStatementsForEntityGroup: entityGroup];
}
else
{
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
EOSQLExpression *sqlExp;
NSString *tableName;
NSString *stmt;
sqlExp = [self expressionForString: nil];
tableName = [entity externalName];
tableName = [sqlExp sqlStringForSchemaObjectName: tableName];
stmt = [NSString stringWithFormat: @"DROP TABLE %@ CASCADE", tableName];
[sqlExp setStatement: stmt];
newArray = [NSArray arrayWithObject: sqlExp];
}
EOFLOGClassFnStopOrCond(@"EOSQLExpression");
return newArray;
}
- (void)prepareConstraintStatementForRelationship: (EORelationship *)relationship
sourceColumns: (NSArray *)sourceColumns
destinationColumns: (NSArray *)destinationColumns
{
// We redefine this method to add "DEFERRABLE INITIALLY DEFERRED": it is needed
// to be able to insert rows into table related to other table rows, before these
// other rows have been inserted (relationship might be bidirectional, or it might
// simply be an operation order problem)
// Q: shouldn't we move this into EOSQLExpression.m?
[super prepareConstraintStatementForRelationship:relationship sourceColumns:sourceColumns destinationColumns:destinationColumns];
ASSIGN(_statement, [_statement stringByAppendingString:@" DEFERRABLE INITIALLY DEFERRED"]);
}
/** Build join expression for all used relationships (call this) after all other query parts construction) **/
- (void)joinExpression
{
int contextStackCount=0;
EOFLOGObjectFnStart();
contextStackCount=[_contextStack count];
if (contextStackCount>1 && _flags.hasOuterJoin)
{
// No join clause in postgresql, joins are added in -tableList...
if (_joinClauseString)
DESTROY(_joinClauseString);
}
else
[super joinExpression];
EOFLOGObjectFnStop();
}
- (NSString *)tableListWithRootEntity: (EOEntity*)entity
{
int contextStackCount=0;
NSString *finalEntitiesString=nil;
EOFLOGObjectFnStart();
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"entity=%@", entity);
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"_aliasesByRelationshipPath=%@",
_aliasesByRelationshipPath);
contextStackCount=[_contextStack count];
if (contextStackCount>1 && _flags.hasOuterJoin)
{
// joins are added here and not in join clause.
NSMutableString *entitiesString = [NSMutableString string];
NSString *relationshipPath = nil ;
EOEntity *currentEntity = nil;
int i = 0;
int relPathIndex = 0;
BOOL useAliases=[self useAliases];
for(relPathIndex=0;relPathIndex<contextStackCount;relPathIndex++)
{
relationshipPath = [_contextStack objectAtIndex:relPathIndex];
currentEntity = entity;
if ([relationshipPath isEqualToString: @""])
{
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
NSString *tableName = [currentEntity externalName];
tableName = [self sqlStringForSchemaObjectName: tableName];
EOFLOGObjectLevelArgs(@"EOSQLExpression",
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
@"entity %p named %@: "
@"externalName=%@ tableName=%@",
currentEntity, [currentEntity name],
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
[currentEntity externalName], tableName);
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
NSAssert1([[currentEntity externalName] length]>0,
@"No external name for entity %@",
[currentEntity name]);
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
[entitiesString appendString: tableName];
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"entitiesString=%@", entitiesString);
if (useAliases)
[entitiesString appendFormat: @" %@",
[_aliasesByRelationshipPath
objectForKey: relationshipPath]];
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"entitiesString=%@", entitiesString);
}
else
{
NSEnumerator *defEnum = nil;
NSArray *defArray = nil;
NSString *relationshipString;
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
NSString *tableName = nil;
EORelationship *rel = nil;
EOQualifier *auxiliaryQualifier = nil;
NSArray *joins = nil;
int i, count=0;
NSMutableString* joinOn=[NSMutableString string];
EOJoinSemantic joinSemantic;
NSString* joinOp = nil;
defArray = [relationshipPath componentsSeparatedByString: @"."];
defEnum = [defArray objectEnumerator];
// Get the relationship for this path (non flattened by design)
rel = [entity relationshipForPath: relationshipPath];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"rel=%@", rel);
NSAssert2(rel, @"No relationship for path %@ in entity %@",
relationshipPath,
[entity name]);
//Get the auxiliary qualifier for this relationship
auxiliaryQualifier = [rel auxiliaryQualifier];
if (auxiliaryQualifier)
{
NSEmitTODO(); //TODO
[self notImplemented:_cmd];
}
while ((relationshipString = [defEnum nextObject]))
{
// use anyRelationshipNamed: to find hidden relationship too
EORelationship *relationship=[currentEntity
anyRelationshipNamed: relationshipString];
NSAssert2(relationship,@"No relationship named %@ in entity %@",
relationshipString,
[currentEntity name]);
NSAssert2(currentEntity,@"No destination entity. Entity %@ relationship = %@",
[currentEntity name],
relationship);
currentEntity = [relationship destinationEntity];
}
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
tableName = [currentEntity externalName];
tableName = [self sqlStringForSchemaObjectName: tableName];
EOFLOGObjectLevelArgs(@"EOSQLExpression",
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
@"entity %p named %@: "
@"externalName=%@ tableName=%@",
currentEntity, [currentEntity name],
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
[currentEntity externalName], tableName);
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
NSAssert1([[currentEntity externalName] length]>0,
@"No external name for entity %@",
[currentEntity name]);
joinSemantic = [rel joinSemantic];
switch (joinSemantic)
{
case EOInnerJoin:
joinOp = @"INNER JOIN";
break;
case EOLeftOuterJoin:
joinOp = @"LEFT OUTER JOIN";
break;
case EORightOuterJoin:
joinOp = @"RIGHT OUTER JOIN";
break;
case EOFullOuterJoin:
joinOp = @"FULL OUTER JOIN";
break;
}
// Get relationship joins
joins = [rel joins];
count = [joins count];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"joins=%@", joins);
// Iterate on each join
for (i = 0; i < count; i++)
{
NSString *sourceRelationshipPath = nil;
NSArray *sourceRelationshipPathArray;
//Get the join
EOJoin *join=[joins objectAtIndex:i];
// Get source and destination attributes
EOAttribute *sourceAttribute = [join sourceAttribute];
EOAttribute *destinationAttribute = [join destinationAttribute];
NSString *sourceAttributeAlias = nil;
NSString *destinationAttributeAlias = nil;
// Build the source relationshipPath
sourceRelationshipPathArray =
[relationshipPath componentsSeparatedByString: @"."];
sourceRelationshipPathArray =
[sourceRelationshipPathArray
subarrayWithRange:
NSMakeRange(0,[sourceRelationshipPathArray count] - 1)];
sourceRelationshipPath = [sourceRelationshipPathArray
componentsJoinedByString: @"."];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"sourceRelationshipPath=%@", sourceRelationshipPath);
// Get the alias for sourceAttribute
sourceAttributeAlias = [self
_aliasForRelatedAttribute:
sourceAttribute
relationshipPath:
sourceRelationshipPath];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"sourceAttributeAlias=%@", sourceAttributeAlias);
// Get the alias for destinationAttribute
destinationAttributeAlias =
[self _aliasForRelatedAttribute: destinationAttribute
relationshipPath: relationshipPath];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"addJoin=%@ %d %@",
sourceAttributeAlias,
(int)joinSemantic,
destinationAttributeAlias);
if (i>0)
[joinOn appendString:@", "];
joinOn = [NSString stringWithFormat: @"%@ = %@",
sourceAttributeAlias,
destinationAttributeAlias];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"joinOn=%@", joinOn);
}
[entitiesString appendFormat:@" %@ %@",
joinOp,
* EOAccess/EOSQLExpression.m ([EOSQLExpression foreignKeyConstraintStatementsForRelationship:]): Create constraint even though no inversRelationship exists. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroup:]): Create constraints for all entities in the group which have no parent entity. ([EOSQLExpression foreignKeyConstraintStatementsForEntityGroups:]): Reformat for source level debuging. ([EOSQLExpression tableListWithRootEntity:]): Honor EOAdaptorQuotesExternalNames. ([EOSQLExpression createTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeyConstraintStatementsForEntityGroup:]): Ditto. ([EOSQLExpression primaryKeySupportStatementsForEntityGroup]): Ditto. ([EOSQLExpression dropPrimaryKeySupportStatementsForEntityGroup:]): Ditto. ([EOSQLExpression prepareConstraintStatementForRelationship: sourceColumns:destinationColumns:]): Ditto. * EOAdaptors/Postgres95/Postgres95SQLExpression.h/m ([Postgres95SQLExpression externalNameQuoteCharacter]): Remove. ([Postgres95SQLExpression createDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary]): Honor EOAdaptorQuotesExternalNames. ([Postgres95SQLExpression dropDatabaseStatementsForConnectionDictionary: administrativeConnectionDictionary:]): Ditto. ([Postgres95SQLExpression dropTableStatementsForEntityGroup:]): Ditto. ([Postgres95SQLExpression tableListWithRootEntity:]): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18661 72102866-910b-0410-8b05-ffd578937521
2004-02-25 12:52:59 +00:00
tableName];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"entitiesString=%@", entitiesString);
if (useAliases)
{
NSString *alias = [_aliasesByRelationshipPath
objectForKey: relationshipPath];
[entitiesString appendFormat: @" %@",alias];
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"appending alias %@ in entitiesString",
alias);
}
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"entitiesString=%@", entitiesString);
[entitiesString appendFormat:@" on (%@) ",joinOn];
EOFLOGObjectLevelArgs(@"EOSQLExpression", @"entitiesString=%@", entitiesString);
}
i++;
}
finalEntitiesString=entitiesString;
}
else
finalEntitiesString=[super tableListWithRootEntity:entity];
EOFLOGObjectLevelArgs(@"EOSQLExpression",
@"finalEntitiesString=%@",
finalEntitiesString);
EOFLOGObjectFnStop();
return finalEntitiesString;
}
- (NSString *)columnTypeStringForAttribute:(EOAttribute *)attribute
{
NSString *extType = [attribute externalType];
NSString *columnTypeString = nil;
if ([extType isEqualToString: @"text"])
{
columnTypeString = [NSString stringWithFormat: @"%@", extType];
}
else
{
columnTypeString = [super columnTypeStringForAttribute: attribute];
}
return columnTypeString;
}
@end