1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//! Query cancellation routes
//!
//! Provides REST endpoints for managing and cancelling running queries.
use ;
use crate;
/// Create query cancellation routes
///
/// # Endpoints
///
/// - `GET /v1/queries` - List running queries
/// - `GET /v1/queries/stats` - Get query statistics
/// - `GET /v1/queries/:query_id` - Get specific query status
/// - `POST /v1/queries/:query_id/cancel` - Cancel a specific query
/// - `POST /v1/queries/cancel-session` - Cancel all queries for a session
/// - `POST /v1/queries/cancel-timed-out` - Cancel timed out queries
///
/// # List Running Queries (GET /v1/queries)
///
/// Lists all currently running queries with filtering options.
///
/// **Query Parameters:**
/// - `user` - Filter by user name
/// - `database` - Filter by database name
/// - `state` - Filter by state (planning, executing, cancelling)
/// - `include_completed` - Include completed queries (default: false)
/// - `limit` - Maximum results (default: 100)
///
/// **Response:**
/// ```json
/// {
/// "queries": [
/// {
/// "query_id": 123,
/// "sql": "SELECT * FROM users WHERE...",
/// "user_name": "alice",
/// "database": "main",
/// "state": "executing",
/// "started_at": "2024-01-01T12:00:00Z",
/// "elapsed_ms": 5000,
/// "rows_processed": 10000,
/// "cancellable": true
/// }
/// ],
/// "total": 1
/// }
/// ```
///
/// # Cancel Query (POST /v1/queries/:query_id/cancel)
///
/// Requests cancellation of a running query.
///
/// **Request Body:**
/// ```json
/// {
/// "reason": "User requested cancellation"
/// }
/// ```
///
/// **Response:**
/// ```json
/// {
/// "query_id": 123,
/// "cancelled": true,
/// "message": "Cancellation requested. Query will terminate shortly."
/// }
/// ```
///
/// # Cancel Session Queries (POST /v1/queries/cancel-session)
///
/// Cancels all queries associated with a specific session.
///
/// **Request Body:**
/// ```json
/// {
/// "session_id": 42,
/// "reason": "Session terminated"
/// }
/// ```
///
/// **Response:**
/// ```json
/// {
/// "cancelled_count": 3,
/// "message": "Cancelled 3 queries for session 42"
/// }
/// ```