Postgresql-odbc Verified File

void end_query_trace(StatementInfo_ *stmt) if (stmt->perf_metrics) stmt->perf_metrics->query_end_time = get_current_time_ms(); uint64_t duration = stmt->perf_metrics->query_end_time - stmt->perf_metrics->query_start_time;

// In connection.h typedef struct // ... existing fields char my_new_param[256]; // new parameter int my_new_feature_enabled; ConnectionInfo_; // In connection.c - parse connection string static int parse_connection_string(ConnectionInfo_ *ci, const char *conn_str) // ... existing parsing code postgresql-odbc

if (duration > stmt->perf_metrics->slow_query_threshold_ms) QLOG_LOG(LOG_WARNING, "Slow query detected: %s (duration: %llu ms)", stmt->perf_metrics->last_query, duration); void end_query_trace(StatementInfo_ *stmt) if (stmt-&gt

return SQL_SUCCESS; // In performance.c - new file for performance features typedef struct uint64_t query_start_time; uint64_t query_end_time; char last_query[4096]; int slow_query_threshold_ms; PerformanceMetrics; void start_query_trace(StatementInfo_ *stmt, const char *query) if (stmt->perf_metrics) stmt->perf_metrics->query_start_time = get_current_time_ms(); strncpy(stmt->perf_metrics->last_query, query, sizeof(stmt->perf_metrics->last_query) - 1); query_end_time = get_current_time_ms()

// In convert.c SQLRETURN convert_jsonb_to_c( const char *value, SQLSMALLINT target_type, void *target_value, SQLLEN *target_len)

curr = curr->next;

StatementCacheEntry *find_cached_statement(const char *sql) StatementCacheEntry *curr = statement_cache; while (curr) if (strcmp(curr->sql, sql) == 0) curr->last_used = time(NULL); curr->use_count++; return curr;