Hello, I want to hear opinions on this: currently, MERGE is always reported as this value of statement type: #define isc_info_sql_stmt_insert 2
It seems to be always an insert statement for the engine. So far so good. Now, please look at isql's process_record_count(): because the input param statement_type is 2, isql will pick count_type = isc_info_req_insert_count; (value 14) Now isql calls the information routine with isc_info_sql_records and starts looping. It's trying to match isc_info_req_insert_count to any of the possible answers from the engine. However, when the engine executes something like this MERGE ... WHEN MATCHED THEN UPDATE SET... the answer comes with the tag #define isc_info_req_update_count 15 whereas the tag isc_info_req_insert_count is followed by zero. Correct behavior from the engine's POV, but it makes isql to miss the result of any UPDATE clause in a MERGE statement. Ideas? - Have the server inform the client in some way this is a MERGE statement such that isql can pick insert and update numbers, sum them and return them as the total number of records affected? - Throw away the logic isql has always used? - Something better? (I hope.) C. --- Claudio Valderrama C. Consultant, SW developer. ------------------------------------------------------------------------------ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel