From: Steven M. <sr...@us...> - 2005-04-04 22:12:58
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19583 Modified Files: InstantPersistence.pas Log Message: Bug fix: 1. When you store in a Parts Attribute an object that is not of the class that the PartsAtribute was defined for, but of an inherited class, then when you retrieve the object, those parts are NOT retrieved. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** InstantPersistence.pas 4 Apr 2005 07:05:17 -0000 1.31 --- InstantPersistence.pas 4 Apr 2005 22:12:48 -0000 1.32 *************** *** 25,29 **** * * Contributor(s): ! * Carlo Barazzetta, Andrea Petrelli, Nando Dessena, Joao Morais * * ***** END LICENSE BLOCK ***** *) --- 25,30 ---- * * Contributor(s): ! * Carlo Barazzetta, Andrea Petrelli, Nando Dessena, Steven Mitchell, ! * Joao Morais, Cisar Coll * * ***** END LICENSE BLOCK ***** *) *************** *** 12711,12716 **** WhereStr: string; begin ! WhereStr := BuildWhereStr([InstantParentClassFieldName, ! InstantParentIdFieldName]); Result := Format('DELETE FROM %s WHERE %s', [EmbraceTable('%s'), WhereStr]); --- 12712,12716 ---- WhereStr: string; begin ! WhereStr := BuildWhereStr([InstantParentIdFieldName]); Result := Format('DELETE FROM %s WHERE %s', [EmbraceTable('%s'), WhereStr]); *************** *** 12722,12726 **** WhereStr: string; begin ! WhereStr := BuildWhereStr([InstantClassFieldName, InstantIdFieldName]); Result := Format('DELETE FROM %s WHERE %s', [EmbraceTable(Map.Name), WhereStr]); --- 12722,12726 ---- WhereStr: string; begin ! WhereStr := BuildWhereStr([InstantIdFieldName]); Result := Format('DELETE FROM %s WHERE %s', [EmbraceTable(Map.Name), WhereStr]); *************** *** 12780,12786 **** begin FieldStr := Format('%s, %s', [EmbraceField('%s'), EmbraceField('%s')]); ! WhereStr := Format('%s = :%s AND %s = :%s', ! [EmbraceField(InstantClassFieldName), InstantClassFieldName, ! EmbraceField(InstantIdFieldName), InstantIdFieldName]); Result := Format('SELECT %s FROM %s WHERE %s', [FieldStr, EmbraceTable('%s'), WhereStr]); --- 12780,12785 ---- begin FieldStr := Format('%s, %s', [EmbraceField('%s'), EmbraceField('%s')]); ! WhereStr := Format('%s = :%s', ! [EmbraceField(InstantIdFieldName), InstantIdFieldName]); Result := Format('SELECT %s FROM %s WHERE %s', [FieldStr, EmbraceTable('%s'), WhereStr]); *************** *** 12794,12801 **** FieldStr := Format('%s, %s, %s', [EmbraceField(InstantChildClassFieldName), EmbraceField(InstantChildIdFieldName), EmbraceField(InstantSequenceNoFieldName)]); ! WhereStr := Format('%s = :%s AND %s = :%s AND %s = :%s', [EmbraceField(InstantParentClassFieldName), InstantParentClassFieldName, ! EmbraceField(InstantParentIdFieldName), InstantParentIdFieldName, ! EmbraceField(InstantChildClassFieldName), InstantChildClassFieldName]); Result := Format('SELECT %s FROM %s WHERE %s ORDER BY %s', [FieldStr, EmbraceTable('%s'), WhereStr, EmbraceField(InstantSequenceNoFieldName)]); --- 12793,12799 ---- FieldStr := Format('%s, %s, %s', [EmbraceField(InstantChildClassFieldName), EmbraceField(InstantChildIdFieldName), EmbraceField(InstantSequenceNoFieldName)]); ! WhereStr := Format('%s = :%s AND %s = :%s', [EmbraceField(InstantParentClassFieldName), InstantParentClassFieldName, ! EmbraceField(InstantParentIdFieldName), InstantParentIdFieldName]); Result := Format('SELECT %s FROM %s WHERE %s ORDER BY %s', [FieldStr, EmbraceTable('%s'), WhereStr, EmbraceField(InstantSequenceNoFieldName)]); *************** *** 12808,12812 **** begin FieldStr := BuildFieldList(Map, [InstantUpdateCountFieldName]); ! WhereStr := BuildWhereStr([InstantClassFieldName, InstantIdFieldName]); Result := Format('SELECT %s FROM %s WHERE %s', [FieldStr, EmbraceTable(Map.Name), WhereStr]); --- 12806,12810 ---- begin FieldStr := BuildFieldList(Map, [InstantUpdateCountFieldName]); ! WhereStr := BuildWhereStr([InstantIdFieldName]); Result := Format('SELECT %s FROM %s WHERE %s', [FieldStr, EmbraceTable(Map.Name), WhereStr]); *************** *** 12826,12831 **** AssignmentStr := BuildAssignmentList(Map, [InstantIdFieldName, InstantUpdateCountFieldName]); ! WhereStr := BuildWhereStr([InstantClassFieldName]) + ! BuildPersistentIdCriteria; Result := Format('UPDATE %s SET %s WHERE %s', [EmbraceTable(Map.Name), AssignmentStr, WhereStr]); --- 12824,12828 ---- AssignmentStr := BuildAssignmentList(Map, [InstantIdFieldName, InstantUpdateCountFieldName]); ! WhereStr := ' (1=1) ' + BuildPersistentIdCriteria; Result := Format('UPDATE %s SET %s WHERE %s', [EmbraceTable(Map.Name), AssignmentStr, WhereStr]); |