You are not logged in.
When i try to create an External AuthGroup table in oracle, the following error occurs:
ORA-02329: column of datatype LOB cannot be unique or primary key
The create statement constructed is as follows:
SQLite3DB.TSQLRestServerStaticExternal.ExecuteDirect('CREATE TABLE AuthGroup (ID NUMBER(22,0) PRIMARY KEY, Ident NCLOB NOT NULL UNIQUE,SessionTimeout NUMBER(22,0),AccessRights NCLOB)',(...),(...),False)
Offline
You are right: those standards tables were not meant to be defined as external.
TSQLAuthUser and TSQLAuthGroup have now "index ..." attributes to their RawUTF8 properties, to allow direct handling in external databases.
See http://synopse.info/fossil/info/cbea85fb7b
But I'm not sure it is a good idea to use those tables with an external engine.
It should be good to enable caching on their content on server side, otherwise the whole session handling will consume unneeded DB resources.
But caching will be handle only per ID, non per unique property. Declare those tables as member of a SQLite3 table could make sense.
I've added a new optional parameter to the new global function:
function VirtualTableExternalRegisterAll(aModel: TSQLModel;
aExternalDB: TSQLDBConnectionProperties; DoNotCacheUserGroupTables: boolean=false): boolean;
Offline
You are right: those standards tables were not meant to be defined as external.
If they are not meant to be defined as external, I'm not really sure how you see the use of UserAuthentication with these tables when using an external database.
Offline
You can have some tables remaining on your server folder, using SQlite3 process, or a very fast in-memory database via TSQLRestServerStaticInMemory.
If you request is that user authentication is part of the main data, not only internal process - e.g. if your login/password is entered by the user - it does make sense to have it on the external DB.
You are right.
I guess this is why I stated the DoNotCacheUserGroupTables: boolean parameter to FALSE by default.
Offline
ok, thanks
Offline