On 16/07/2021 06:25, Vlad Khorsun wrote: > 15.07.2021 22:34, Adriano dos Santos Fernandes wrote: >> Hi! >> >> Currently it's possible to set TraceDSQL config parameter in dev build >> to have formatted statement BLR in firebird.log, but that is not >> sufficient for automated tests. >> >> I want to add facility to make it possible to applications request >> individual statements BLR for debug and test purposes (also in prod >> build). >> >> Here is the design I would go: >> >> interface Statement >> { >> const uint PREPARE_PRESERVE_BLR = 0x80; >> } >> >> #define isc_info_sql_blr_bytes 31 >> #define isc_info_sql_blr_text 32 >> >> Statements prepared with PREPARE_PRESERVE_BLR would be usable with >> getInfo and isc_info_sql_blr_*. >> >> isc_info_sql_blr_bytes retrieves raw BLR bytes and isc_info_sql_blr_text >> retrieves formatted BLR as the BLOB filter/TraceDSQL. >> >> ISQL will have SET BLR_DISPLAY OFF/ON/ONLY. ONLY will make only >> prepare/display without execution. >> >> ISQL would use isc_info_sql_blr_text and retrieves already formatted >> data ready for display. >> >> That would be for master and v4. >> >> Comments? > > I like it. Not sure how it will handle non-DML statements, but it is > tool for those who understand how and why to use it. > > Regards, > Vlad > > PS same way to get dsql\jrd parse tree ? :) >
Instead of isc_info_sql_blr_bytes/isc_info_sql_blr_text, we can add single top level info code with sub code for raw/blr / dsql/jrd parse trees. We need to adjust ISQL SET BLR_DISPLAY to some other generic name and allow turning each of this on/off. We may call this facility as something like "internal execution path". Adriano Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel