Hello,
We have an error connected with virtual fields. Error occurs only with @cap-js/sqlite (better-sqlite3), it wasn't present with the previous sqlite3 and there is no such error in logs of deployed app and HANA DB in Cloud Foundry.
PUT http://localhost:4004/ecs-configuration/EcsConfigurations('B883036DDDF81EDDA8C25A0E0FB8648C')/attachments(03a2327d-6680-4315-8c5d-8f98c4af4fde)/content
"content" is the virtual field
aspect file {
@Core.Computed : false
@Core.MediaType : mediaType
@Core.ContentDisposition.Filename: fileName
virtual content : LargeBinary;
@Core.IsMediaType : true
mediaType : String;
fileName : String;
isUploaded : Boolean default false;
}
HANA DB doesn't try to update this non persisted field, but sqlite does. SqliteError:
[cds] - SqliteError: cannot modify EcsConfigurationService_EcsConfigAttachments because it is a view in:
UPDATE EcsConfigurationService_EcsConfigAttachments AS attachments SET content=? WHERE exists (SELECT 1 FROM EcsConfigurationService_EcsConfigurations as EcsConfigurations WHERE attachments.ecsConfigurationID = EcsConfigurations.ID and EcsConfigurations.ID = ?) and attachments.ID = ?
at Database.prepare (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/better-sqlite3/lib/methods/wrappers.js:5:21)
at SQLiteService.prepare (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@cap-js/sqlite/lib/SQLiteService.js:47:23)
at SQLiteService.onSTREAM (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@cap-js/sqlite/lib/SQLiteService.js:155:29)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async next (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@sap/cds/lib/srv/srv-dispatch.js:79:17)
at async SQLiteService.handle (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@sap/cds/lib/srv/srv-dispatch.js:77:10)
at async SQLiteService.transformStreamIntoCQN (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@cap-js/db-service/lib/SQLService.js:47:20)
at async next (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@sap/cds/lib/srv/srv-dispatch.js:79:17)
at async SQLiteService.handle (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@sap/cds/lib/srv/srv-dispatch.js:77:10)
at async ApplicationService.<anonymous> (/Users/C5364226/Projects/PCEConfigurator/DealConfigMgmt/node_modules/@sap/cds/libx/_runtime/common/generic/crud.js:67:16) {
code: 'SQLITE_ERROR',
sql: 'UPDATE EcsConfigurationService_EcsConfigAttachments AS attachments SET content=? WHERE exists (SELECT 1 FROM EcsConfigurationService_EcsConfigurations as EcsConfigurations WHERE attachments.ecsConfigurationID = EcsConfigurations.ID and EcsConfigurations.ID = ?) and attachments.ID = ?',
id: '1340513',
level: 'ERROR',
timestamp: 1693894722372
}