From 68ea916bf11341b82699c623975903884f933371 Mon Sep 17 00:00:00 2001 From: George MacKerron Date: Fri, 5 May 2023 14:49:15 +0100 Subject: [PATCH] More tweaks, now compiling --- proxy/src/http.rs | 1 + proxy/src/http/websocket.rs | 17 +++++++++-------- vendor/postgres-v14 | 2 +- vendor/postgres-v15 | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/proxy/src/http.rs b/proxy/src/http.rs index a544157800..4a2f7c1152 100644 --- a/proxy/src/http.rs +++ b/proxy/src/http.rs @@ -2,6 +2,7 @@ //! Other modules should use stuff from this module instead of //! directly relying on deps like `reqwest` (think loose coupling). +pub mod pg_to_json; pub mod server; pub mod websocket; diff --git a/proxy/src/http/websocket.rs b/proxy/src/http/websocket.rs index dbf27d521f..2e9cdbacc1 100644 --- a/proxy/src/http/websocket.rs +++ b/proxy/src/http/websocket.rs @@ -5,13 +5,14 @@ use crate::{ }; use bytes::{Buf, Bytes}; use futures::{Sink, Stream, StreamExt}; -use hashbrown::HashMap; +use std::collections::HashMap; use hyper::{ server::{accept, conn::AddrIncoming}, upgrade::Upgraded, Body, Method, Request, Response, StatusCode, }; use hyper_tungstenite::{tungstenite::Message, HyperWebsocket, WebSocketStream}; +use percent_encoding::percent_decode; use pin_project_lite::pin_project; use pq_proto::StartupMessageParams; use serde_json::Value; @@ -257,7 +258,7 @@ async fn handle_sql( None => return Err(anyhow::anyhow!("no host header")) }; - let body = request.into_body(); + let mut body = request.into_body(); let mut data = Vec::with_capacity(512); while let Some(chunk) = body.next().await { data.extend(&chunk?); @@ -269,7 +270,7 @@ async fn handle_sql( params: Vec } - let queryData: QueryData = serde_json::from_slice(&data)?; + let query_data: QueryData = serde_json::from_slice(&data)?; let params = StartupMessageParams::new([ ("user", username), @@ -315,11 +316,11 @@ async fn handle_sql( } }); - let query = &queryData.query; - let params = queryData.params.iter().map(|value| match value { + let query = &query_data.query; + let params = query_data.params.iter().map(|value| match value { // Value::Null => &None as &(dyn ToSql + Sync), Value::Bool(b) => b as &(dyn ToSql + Sync), - Value::Number(n) => &n.as_f64() as &(dyn ToSql + Sync), + // Value::Number(n) => &n.as_f64() as &(dyn ToSql + Sync), Value::String(s) => s as &(dyn ToSql + Sync), _ => panic!("wrong parameter type") }).collect::>(); @@ -340,7 +341,7 @@ pub struct ConnectionCache { connections: HashMap, } -/* + impl ConnectionCache { pub fn new() -> Arc> { Arc::new(Mutex::new(Self { @@ -401,7 +402,7 @@ impl ConnectionCache { Ok(serde_json::to_string(&rows)?) } } -*/ + pub async fn task_main( config: &'static ProxyConfig, diff --git a/vendor/postgres-v14 b/vendor/postgres-v14 index 3e70693c91..c22aea6714 160000 --- a/vendor/postgres-v14 +++ b/vendor/postgres-v14 @@ -1 +1 @@ -Subproject commit 3e70693c9178878404d14a61c96b15b74eb02688 +Subproject commit c22aea67149a2fe71cab881be7a31fba305ddc21 diff --git a/vendor/postgres-v15 b/vendor/postgres-v15 index 4ad87b0f36..114da43a49 160000 --- a/vendor/postgres-v15 +++ b/vendor/postgres-v15 @@ -1 +1 @@ -Subproject commit 4ad87b0f364a2313600c1d9774ca33df00e606f4 +Subproject commit 114da43a4967c068c958dacd6dedf65053c99148