From: Alexander S.K. <al...@be...> - 2009-04-24 06:31:37
|
Marcos, to say the true, there is at least one problem, now I think how to resolve it. When the client program sets filter, the server compiles the filter string and evaluates it one time to check, is there an error. This operations are done on prg level and are enclosed in BEGIN SEQUENCE ... RECOVER ... END SEQUENCE. Imagine, that there is a field NNN in the table and in the moment when the filter expression is checked, the value of NNN in current record is 1. The filter string is: "NNN > 1 .AND. MyFunc()", where MyFunc() is an UDF, which is known on a cleint side only. But the server will not find an error at this moment, because the first condition in a string is false and MyFunc() will not be evaluated. So, the server will decide that he can use this filter expression - and at the moment when after going through the table the current value on NNN will be 1, server will exit with an error, because evaluating of skipping is done on a C level, where we haven't BEGIN SEQUENCE ... RECOVER ... END SEQUENCE. I don't sure that I explained this clear enough, but the result is that in some cases some filter expressions, which contains UDF's or private variables, or some mistake, may cause letodb server break. Regards, Alexander. > Many developers in Brazil have interest in LetoDB. But they always have two questions: > > 1. Is stable ? > > 2. Is anyone using in production ? > > Your "case of use" is very good to estimulate others developers. > > Thank you! > > > Regards, > Marcos Gambeta > > |