|
1 | 1 | use crate::pool::BanReason;
|
2 | 2 | use crate::stats::pool::PoolStats;
|
3 | 3 | use bytes::{Buf, BufMut, BytesMut};
|
4 |
| -use log::{error, info, trace}; |
| 4 | +use log::{debug, error, info, trace}; |
5 | 5 | use nix::sys::signal::{self, Signal};
|
6 | 6 | use nix::unistd::Pid;
|
7 | 7 | use std::collections::HashMap;
|
|
84 | 84 | shutdown(stream).await
|
85 | 85 | }
|
86 | 86 | "SHOW" => match query_parts[1].to_ascii_uppercase().as_str() {
|
| 87 | + "HELP" => { |
| 88 | + trace!("SHOW HELP"); |
| 89 | + show_help(stream).await |
| 90 | + } |
87 | 91 | "BANS" => {
|
88 | 92 | trace!("SHOW BANS");
|
89 | 93 | show_bans(stream).await
|
@@ -271,6 +275,45 @@ where
|
271 | 275 | write_all_half(stream, &res).await
|
272 | 276 | }
|
273 | 277 |
|
| 278 | +/// Show all available options. |
| 279 | +async fn show_help<T>(stream: &mut T) -> Result<(), Error> |
| 280 | +where |
| 281 | + T: tokio::io::AsyncWrite + std::marker::Unpin, |
| 282 | +{ |
| 283 | + let mut res = BytesMut::new(); |
| 284 | + |
| 285 | + let detail_msg = vec![ |
| 286 | + "", |
| 287 | + "SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION", |
| 288 | + // "SHOW PEERS|PEER_POOLS", // missing PEERS|PEER_POOLS |
| 289 | + // "SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM|STATE", // missing FDS|SOCKETS|ACTIVE_SOCKETS|MEM|STATE |
| 290 | + "SHOW LISTS", |
| 291 | + // "SHOW DNS_HOSTS|DNS_ZONES", // missing DNS_HOSTS|DNS_ZONES |
| 292 | + "SHOW STATS", // missing STATS_TOTALS|STATS_AVERAGES|TOTALS |
| 293 | + "SET key = arg", |
| 294 | + "RELOAD", |
| 295 | + "PAUSE [<db>, <user>]", |
| 296 | + "RESUME [<db>, <user>]", |
| 297 | + // "DISABLE <db>", // missing |
| 298 | + // "ENABLE <db>", // missing |
| 299 | + // "RECONNECT [<db>]", missing |
| 300 | + // "KILL <db>", |
| 301 | + // "SUSPEND", |
| 302 | + "SHUTDOWN", |
| 303 | + // "WAIT_CLOSE [<db>]", // missing |
| 304 | + ]; |
| 305 | + |
| 306 | + res.put(notify("Console usage", detail_msg.join("\n\t"))); |
| 307 | + res.put(command_complete("SHOW")); |
| 308 | + |
| 309 | + // ReadyForQuery |
| 310 | + res.put_u8(b'Z'); |
| 311 | + res.put_i32(5); |
| 312 | + res.put_u8(b'I'); |
| 313 | + |
| 314 | + write_all_half(stream, &res).await |
| 315 | +} |
| 316 | + |
274 | 317 | /// Show shards and replicas.
|
275 | 318 | async fn show_databases<T>(stream: &mut T) -> Result<(), Error>
|
276 | 319 | where
|
|
0 commit comments