Skip to Content
0
Sep 05, 2023 at 06:40 AM

Cloud Application Programming (CAPM) virtual fields DB @cap-js/sqlite error

268 Views

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
}