diff --git a/CHANGELOG.md b/CHANGELOG.md index e5301c27..9f27184f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -131,7 +131,7 @@ and to create JSON APIs. #### Other sql syntax enhancements - SQLPage now supports the custom `CONVERT` expression syntax for MS SQL Server, and the one for MySQL. - - SQLPage now supports the `VARCHAR(MAX)` type in MS SQL Server. + - SQLPage now supports the `VARCHAR(MAX)` type in MS SQL Server and uses it for all variables bound as parameters to your SQL queries (we used to use `VARCHAR(8000)` before). - `INSERT INTO ... DEFAULT VALUES ...` is now supported ### Other news diff --git a/src/webserver/database/sql.rs b/src/webserver/database/sql.rs index 3afe3fc0..d33fcc72 100644 --- a/src/webserver/database/sql.rs +++ b/src/webserver/database/sql.rs @@ -274,10 +274,7 @@ impl ParameterExtractor { let data_type = match self.db_kind { // MySQL requires CAST(? AS CHAR) and does not understand CAST(? AS TEXT) AnyKind::MySql => DataType::Char(None), - AnyKind::Mssql => DataType::Varchar(Some(CharacterLength::IntegerLength { - length: 8000, - unit: None, - })), + AnyKind::Mssql => DataType::Varchar(Some(CharacterLength::Max)), _ => DataType::Text, }; let value = Expr::Value(Value::Placeholder(name)); @@ -664,7 +661,7 @@ mod test { let parameters = ParameterExtractor::extract_parameters(&mut ast, AnyKind::Mssql); assert_eq!( ast.to_string(), - "SELECT CONCAT('', CAST(@p1 AS VARCHAR(8000))) FROM [a schema].[a table]" + "SELECT CONCAT('', CAST(@p1 AS VARCHAR(MAX))) FROM [a schema].[a table]" ); assert_eq!(parameters, [StmtParam::GetOrPost("1".to_string()),]); }