Hello Sean!

On 2014.05.01. 21:24, Leyne, Sean wrote:
>> TRIGGER : NEW/OLD values accessible by column name, and column number
>> (PSQL)
>>      - e.g.: NEW['id'], NEW[0]
>>      - gain : code reduction, dynamic code (don't have to alter the trigger 
>> ICO
>> the table structure altered)
> 1- What advantage does NEW['id'] have over the current syntax "new.id"???
I could iterate trough columns/values, currently I can't.
>
> 2- column numbers reference is extremely dangerous, the column position can 
> be changed using simple DDL.  So, all Trigger references would be invalidated!
I do not want hardcode index numbers it's about iteration. But you're 
right, support only access by name is quite enough.
>
>
>> Optimization I.
>>      - VOLATILE (default) / DETERMINISTIC flag for UDF and FUNCTION (maybe
>> lifecycle for deterministic : statement, transaction, connection)
>>      - gain : preformance (can cache DETERMINISTIC UDF/FUNCTION results)
> Actually, I think that with the exception of a random number generator, the 
> default for UDF should be DETERMINISTIC (Over 99% of UDFs are not volatile).
User shold define deterministic flag. Only slow UDF/FUNCTION shold be 
flagged this or else the cache size and lookup time would increase too big.
>
>
>>      - SELECT DISTINCT <index fields> FROM table is slow (natural scan on all
>> records) and SELECT <index fields> FROM table GROUP BY <index fields> is
>> also slow (worse! : index scan on all records).
>>      - currently you have to keep a separate table with this information 
>> because
>> you can't access to this information fast
>>      - solution 1 : use index in this case;
> Using an index may not help:
>
> 1- an index is stored without regard to physical disk location, so using it 
> will create a huge amount of random disk IO.  Whereas a NATURAL scan follows 
> the table.
>
> 2- In an version based database like Firebird each row will need to be read 
> to confirm the current value of the target field.
>
>
>> Index usage optimization II.
>>      IS NOT NULL should use index. It is equivalent with >= min_value or <=
>> max_value based on index direction
> I don't think this is possible.
>
> With an MVCC it is possible for all rows to have both a NULL and NOT NULL 
> values stored in the field index, so reading each rows is required.  But as 
> noted in #1 above, reading by index can lead to significant disk 
> IO/degradation
I don't understand this. An equivalent statement can use index and 
produce the same result and this why can't? What I'm missing?
>
>> Index usage optimization III.
>>      - condition pre-evaluation and reduction. e.g.: WHERE 1 = 2 AND field =
>> :param is always FALSE. Evaluation does not needed for all records, can
>> decide at prepare time whether the result is an empty resultset or an
>> unfiltered resultset.
> I agree that the engine needs to add support for 'execution time' 
> optimization.  To allow for conditions to be bypassed (as your example) as 
> well as eliminate unneeded JOIN in SELECT and Views.
>
>
>> PSQL exception handling : new variables aside GDSCODE and SQLCODE
>>      - ERRORMESSAGE : form fbclient
>>      - GDSCODE_ORI, SQLCODE_ORI, ERRORMESSAGE_ORI : execute statement
>> errors on external database hides the original error code, you should access
>> them with these
>>      - gain : better logging and error tracking and user feedback
> User feedback?
Based on error code we have our extended error messages and suggestions 
to deal with it, but in this case we can't properly do this.
>> rename objects
>>      it's a nightmare to rename soething with many-many dependencies
>
>
>> Save blob as file to disk at server side
>>      - gain : easy UDF deploy and update (and many other thing)
>>      - it's also a seurity risk, so some options needed in firebird.conf
> This would violate data integrity requirements.  If I save data to a Blob, I 
> expect the data to be available -- saving externally would allow for external 
> data to be deleted without the database/me knowing.
>
> I believe that there are UDFs available for this already, no?
A very old and unsuppoted udf. In my case I do not expect to read back 
from file to DB just one way.
>
>
>> select from execute block
>>      - gain : avoid stored procedure creation. With select from select it's 
>> easy to
>> generate code, but can't do that with execute block. (select from procedure
>> is allowed, but execute block can't replace the procedure in this case)
> EXECUTE BLOCK already supports returning data, what are you looking for?

Once I was needed the following logic (via code generation result). I 
bypassed it using stored proc.

SELECT
FROM
     (EXECUTE BLOCK
     AS
     BEGIN
       SELECT
       FROM (
           EXECUTE BLOCK
           AS
           BEGIN
           END)
     )

>
> ------------------------------------------------------------------------------
> "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
> Instantly run your Selenium tests across 300+ browser/OS combos.  Get
> unparalleled scalability from the best Selenium testing platform available.
> Simple to use. Nothing to install. Get started now for free."
> http://p.sf.net/sfu/SauceLabs
> Firebird-Devel mailing list, web interface at 
> https://lists.sourceforge.net/lists/listinfo/firebird-devel


------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
&#149; 3 signs your SCM is hindering your productivity
&#149; Requirements for releasing software faster
&#149; Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to