|
Some answers below.... Daniel John Debrunner (JIRA) wrote: One side-effect of directly executing DDLs is that they need to be compiled everytime... I think that is what I was refering to.. though I don't see many useful cases where sharing a DDL plan would be useful. I will modify the line.[ http://issues.apache.org/jira/browse/DERBY-464?page=comments#action_12361221 ]spec> DDL statements directly invoke executing mechanism simplify the implementation at the cost of a small increase in execution time. I don't think that's true. DDL''s are not slower due to using a constant action. That's not the reason for the way they are handled. I think the basic idea is that DDL's are limited in structure compared to DML and can easily be represented by an object that represents an action and a set of constants. DDL did generate a java class to execute the constant action but I cleaned that up to use a fixed implementation (sub-class) of BaseActivation , as otherwise each DDL would be generating an identical class. This was wasteful when most DDL is discarded after a single execution. Derby currently recognises user names of upto 30 only, not longer... It raises errors, though not very clear from the error message itself. Try having a longer name than 30 characters in the URL. Still, may be I could change the size in the catalog to 128, which would allow any changes to this size in the future.In various tables you have the user name represented (I think) as VARCHAR(30) (GRANTEE, GRANTOR columns). Why 30? In the existing SYSSCHEMAs the user identifer is VARCHAR(128), I think 128 is a better limit for user names. I will expand on the run-time issues little later... I am still developing this area.spec> Permission checking is done at execution time. Could you expand on that? Are you going to match the current scheme, permissions checked when an internal ResultSet is created? Something else? I will cover these in more details... once I make more progress...spec> The permission checks could be done at compilation time. For the reasons given I think this is a bad idea, the statement cache. I do think we can set it up so that permissions are checked when the statement is prepared by the application, even when it picks up an existing compiled plan. This would be better than per execution of the statement. That's probably a separate discussion once you reveal what you are currently planning. spec > The permission checks could be done at compilation time. PreparedStatements would have to be re-compiled when permissions are revoked, as they are recompiled when tables are altered. Don't you have to recompile statement plans when permissions are revoked or granted? Even if you are checking permissions at execution time? Can you document the locking plans (e.g. what locks does grant get) and the interaction with the dependency system. I think these are key to getting the design right and secure. Satheesh
|
- Re: [jira] Commented: (DERBY-464) Enhance Derby by a... Satheesh Bandaram
- Re: [jira] Commented: (DERBY-464) Enhance Derby... Daniel John Debrunner
