Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | fixed issue when retrieving a TSQLRecord containing TSQLRecordMany properties with external tables (like 'no such column DestList' error) via SQLite3 virtual tables (e.g. for a JOINed query like FillPrepareMany) |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e1c3c95b95e940b1d2141a6ff544072a |
User & Date: | abouchez 2013-10-30 14:47:15 |
2013-10-31
| ||
08:29 | enhanced FillPrepareMany() regression tests check-in: f4f9bdf93a user: abouchez tags: trunk | |
2013-10-30
| ||
14:47 | fixed issue when retrieving a TSQLRecord containing TSQLRecordMany properties with external tables (like 'no such column DestList' error) via SQLite3 virtual tables (e.g. for a JOINed query like FillPrepareMany) check-in: e1c3c95b95 user: abouchez tags: trunk | |
2013-10-29
| ||
16:44 | also fix TSQLRestRoutingJSON_RPC from the same unexpected GPF issue check-in: 8acac4fc09 user: abouchez tags: trunk | |
Changes to SQLite3/mORMot.pas.
750
751
752
753
754
755
756
757
758
759
760
761
762
763
.....
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
|
- added TTypeInfo.ClassCreate() method to create a TObject instance from RTTI - TEnumType.GetEnumNameValue() will now recognize both 'sllWarning' and 'Warning' text as a sllWarning item (will enhance JSONToObject() process) - added ClassInstanceCreate() function calling any known virtual constructor - added TPropInfo.ClassFromJSON() to properly unserialize TObject properties - added TSQLPropInfo.SQLFieldTypeName property - fixed [f96cf0fc5d] and [221ee9c767] about TSQLRecordMany JSON serialization - fixed TInterfacedCollection.GetClass to be defined as a class function - TSQLRestClientURINamedPipe and TSQLRestClientURIMessage are now thread-safe (i.e. protected by a system mutex) therefore can be called from a multi-threaded process, e.g. TSQLRestServer instances as proxies - modified named pipe client side to avoid unexpected file not found errors - TInterfaceFactory instances are now shared among all interface-based features (e.g. services, callbacks or mocks/stubs), in a thread-safe cache ................................................................................ var f: integer; begin fModel := aModel; fProps := aTable.RecordProps; SetKind(aKind); with Props do for f := 0 to Fields.Count-1 do with Fields.List[f] do begin // pre-computation of SQL statements SQL.UpdateSet[true] := SQL.UpdateSet[true]+Name+'=?,'; SQL.InsertSet := SQL.InsertSet+Name+','; if f in SimpleFieldsBits[soUpdate] then SQL.UpdateSet[false] := SQL.UpdateSet[false]+Name+'=?,'; // filter + validation of unique fields, i.e. if marked as "stored false" if f in IsUniqueFieldsBits then begin |
>
>
>
|
>
|
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
.....
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
20191
20192
20193
|
- added TTypeInfo.ClassCreate() method to create a TObject instance from RTTI - TEnumType.GetEnumNameValue() will now recognize both 'sllWarning' and 'Warning' text as a sllWarning item (will enhance JSONToObject() process) - added ClassInstanceCreate() function calling any known virtual constructor - added TPropInfo.ClassFromJSON() to properly unserialize TObject properties - added TSQLPropInfo.SQLFieldTypeName property - fixed [f96cf0fc5d] and [221ee9c767] about TSQLRecordMany JSON serialization - fixed issue when retrieving a TSQLRecord containing TSQLRecordMany properties with external tables (like 'no such column DestList' error) via SQLite3 virtual tables (e.g. for a JOINed query like FillPrepareMany) - fixed TInterfacedCollection.GetClass to be defined as a class function - TSQLRestClientURINamedPipe and TSQLRestClientURIMessage are now thread-safe (i.e. protected by a system mutex) therefore can be called from a multi-threaded process, e.g. TSQLRestServer instances as proxies - modified named pipe client side to avoid unexpected file not found errors - TInterfaceFactory instances are now shared among all interface-based features (e.g. services, callbacks or mocks/stubs), in a thread-safe cache ................................................................................ var f: integer; begin fModel := aModel; fProps := aTable.RecordProps; SetKind(aKind); with Props do for f := 0 to Fields.Count-1 do with Fields.List[f] do if SQLFieldType in COPIABLE_FIELDS then begin // sftMany fields do not exist // pre-computation of SQL statements SQL.UpdateSet[true] := SQL.UpdateSet[true]+Name+'=?,'; SQL.InsertSet := SQL.InsertSet+Name+','; if f in SimpleFieldsBits[soUpdate] then SQL.UpdateSet[false] := SQL.UpdateSet[false]+Name+'=?,'; // filter + validation of unique fields, i.e. if marked as "stored false" if f in IsUniqueFieldsBits then begin |