From 81cfa517fedbbba818d805c17868b9e62f83d2c9 Mon Sep 17 00:00:00 2001 From: Gil Mizrahi Date: Thu, 13 Jun 2024 01:52:55 +0300 Subject: [PATCH] Invert the update columns syntax for update procedures (#494) ### What Slack thread for more context: https://hasurahq.slack.com/archives/C04NS5JCD8A/p1717760957475579 We want to introduce a different syntax for column update. Instead of bucketing by operations, we bucket by column names. #### Old API ```json { "_set": { "name": "Al", "address": "street"}, "_inc": { "age": 1}, "_concat": { "..." } } ``` #### New API ```json { "update_columns": { "name": { "_set": "Al" }, "address": { "_set": "street" }, "age": { "_inc": 1 } } } ``` This syntax is more consistent with other operations in other places, and makes it easy to augment the existing update procedure with new operations without adding arguments. ### How Warning: this code was written at night, extra care is advised. 1. We change the name of the `_set` argument in the schema to `update_columns` 2. We introduce a new object type for each column update with the structure `{ _set: value }` 3. The type for `update_columns` is all the columns in the table mapped to their object type. 4. We parse the `update_columns` object by parsing each column and its operation, and generate a `MutationValueExpression`. ## Versioning and changelog No need to worry about versioning. This is all in the `veryExperimentalWIP` mutationVersion. --- crates/connectors/ndc-postgres/src/schema.rs | 111 +- .../translation/src/translation/error.rs | 21 + .../mutation/experimental/update.rs | 98 +- ...schema_tests__schema_test__get_schema.snap | 2121 +++++++++++++---- ...experimental_insert_update_custom_dog.json | 6 +- 5 files changed, 1823 insertions(+), 534 deletions(-) diff --git a/crates/connectors/ndc-postgres/src/schema.rs b/crates/connectors/ndc-postgres/src/schema.rs index f79d8533..2f829eb9 100644 --- a/crates/connectors/ndc-postgres/src/schema.rs +++ b/crates/connectors/ndc-postgres/src/schema.rs @@ -577,7 +577,7 @@ fn experimental_insert_to_procedure( /// Given an experimental `UpdateMutation`, turn it into a `ProcedureInfo` to be output in the schema. fn experimental_update_to_procedure( - name: &String, + procedure_name: &str, update: &mutation::experimental::update::UpdateMutation, object_types: &mut BTreeMap, scalar_types: &mut BTreeMap, @@ -585,10 +585,8 @@ fn experimental_update_to_procedure( let mutation::experimental::update::UpdateMutation::UpdateByKey(update_by_key) = update; let mut arguments = BTreeMap::new(); - let object_type = make_object_type(&update_by_key.columns); - let object_name = format!("{name}_object"); - object_types.insert(object_name.clone(), object_type); + // by column argument. arguments.insert( update_by_key.by_column.name.clone(), models::ArgumentInfo { @@ -596,13 +594,8 @@ fn experimental_update_to_procedure( description: update_by_key.by_column.description.clone(), }, ); - arguments.insert( - update_by_key.set_argument_name.clone(), - models::ArgumentInfo { - argument_type: models::Type::Named { name: object_name }, - description: None, - }, - ); + + // pre check argument. arguments.insert( update_by_key.pre_check.argument_name.clone(), models::ArgumentInfo { @@ -612,6 +605,8 @@ fn experimental_update_to_procedure( description: Some(update_by_key.pre_check.description.clone()), }, ); + + // post check argument. arguments.insert( update_by_key.post_check.argument_name.clone(), models::ArgumentInfo { @@ -622,8 +617,70 @@ fn experimental_update_to_procedure( }, ); + // update columns argument. + // Is of the form update_columns: { : { : }, ... }. + // + // 1. We need to create an object type for each `{ : }` object + // 2. We need to create an object type for the mapping of column to column update object + // 3. We need to add the argument to match the name of the object in (2) + + // Keep track of the fields. + let mut fields = BTreeMap::new(); + + // Make an object type for each column's update object. + for (column_name, column_info) in &update_by_key.table_columns { + let (object_name, object_type) = make_update_column_type( + &update_by_key.collection_name, + column_name, + column_to_type(column_info), + ); + // add to object types + object_types.insert(object_name.clone(), object_type.clone()); + // Remember for the update_columns type + fields.insert( + column_name.clone(), + models::ObjectField { + description: Some(format!( + "Update the '{column_name}' column in the '{}' collection.", + update_by_key.collection_name + )), + r#type: models::Type::Named { name: object_name }, + arguments: BTreeMap::new(), + }, + ); + } + + // Create the update columns object type. + let update_columns_object_type_name = format!( + "{procedure_name}_{}", + update_by_key.update_columns_argument_name + ); + + object_types.insert( + update_columns_object_type_name.clone(), + models::ObjectType { + description: Some(format!( + "Update the columns of the '{}' collection", + update_by_key.collection_name + )), + fields, + }, + ); + + // Insert the update columns argument. + arguments.insert( + update_by_key.update_columns_argument_name.clone(), + models::ArgumentInfo { + argument_type: models::Type::Named { + name: update_columns_object_type_name, + }, + description: None, + }, + ); + + // Make a type for the procedure. make_procedure_type( - name.to_string(), + procedure_name.to_string(), Some(update_by_key.description.to_string()), arguments, models::Type::Named { @@ -705,6 +762,36 @@ fn make_procedure_type( } } +/// Build an `ObjectType` for an update column. +fn make_update_column_type( + collection_name: &str, + column_name: &str, + column_type: models::Type, +) -> (String, models::ObjectType) { + let mut fields = BTreeMap::new(); + let object_type_name = format!("update_column_{collection_name}_{column_name}"); + + // Right now we only support set + fields.insert( + "_set".to_string(), + models::ObjectField { + description: Some("Set the column to this value".to_string()), + r#type: column_type, + arguments: BTreeMap::new(), + }, + ); + + ( + object_type_name.clone(), + models::ObjectType { + description: Some(format!( + "Update the '{column_name}' column in the '{collection_name}' collection" + )), + fields, + }, + ) +} + /// Map our local type representation to ndc-spec type representation. #[allow(clippy::match_same_arms)] // merging arms would require changing the order, making this harder to understand fn map_type_representation( diff --git a/crates/query-engine/translation/src/translation/error.rs b/crates/query-engine/translation/src/translation/error.rs index 5b296ece..93df0064 100644 --- a/crates/query-engine/translation/src/translation/error.rs +++ b/crates/query-engine/translation/src/translation/error.rs @@ -35,6 +35,11 @@ pub enum Error { NotImplementedYet(String), NoProcedureResultFieldsRequested, UnexpectedStructure(String), + UnexpectedOperation { + column_name: String, + operation: String, + available_operations: Vec, + }, InternalError(String), NestedArrayTypesNotSupported, NestedArraysNotSupported { @@ -146,6 +151,22 @@ impl std::fmt::Display for Error { f, "Procedure requests must ask for 'affected_rows' or use the 'returning' clause." ), + Error::UnexpectedOperation { + column_name, + operation, + available_operations, + } => { + let mut string = format!( + "Unexpected operation '{operation}' on column {column_name}. Expected one of: " + ); + for (index, op) in available_operations.iter().enumerate() { + string.push_str(op); + if index < available_operations.len() - 1 { + string.push_str(", "); + } + } + write!(f, "{string}") + } Error::UnexpectedStructure(structure) => write!(f, "Unexpected {structure}."), Error::InternalError(thing) => { write!(f, "Internal error: {thing}.") diff --git a/crates/query-engine/translation/src/translation/mutation/experimental/update.rs b/crates/query-engine/translation/src/translation/mutation/experimental/update.rs index 330ede92..b1eb3edf 100644 --- a/crates/query-engine/translation/src/translation/mutation/experimental/update.rs +++ b/crates/query-engine/translation/src/translation/mutation/experimental/update.rs @@ -28,10 +28,10 @@ pub struct UpdateByKey { pub schema_name: sql::ast::SchemaName, pub table_name: sql::ast::TableName, pub by_column: metadata::database::ColumnInfo, - pub set_argument_name: String, + pub update_columns_argument_name: String, pub pre_check: Constraint, pub post_check: Constraint, - pub columns: BTreeMap, + pub table_columns: BTreeMap, } /// The name and description of the constraint input argument. @@ -65,7 +65,7 @@ pub fn generate_update_by_unique( table_name: sql::ast::TableName(table_info.table_name.clone()), collection_name: collection_name.clone(), by_column: unique_column.clone(), - set_argument_name: "_set".to_string(), + update_columns_argument_name: "update_columns".to_string(), pre_check: Constraint { argument_name: "pre_check".to_string(), description: format!( @@ -78,7 +78,7 @@ pub fn generate_update_by_unique( "Update permission post-condition predicate over the '{collection_name}' collection" ), }, - columns: table_info.columns.clone(), + table_columns: table_info.columns.clone(), description, }); @@ -99,10 +99,12 @@ pub fn translate( match mutation { UpdateMutation::UpdateByKey(mutation) => { let object = arguments - .get(&mutation.set_argument_name) - .ok_or(Error::ArgumentNotFound("_set".to_string()))?; + .get(&mutation.update_columns_argument_name) + .ok_or(Error::ArgumentNotFound( + mutation.update_columns_argument_name.clone(), + ))?; - let set = parse_set(env, state, mutation, object)?; + let set = parse_update_columns(env, state, mutation, object)?; let table_name_and_reference = TableNameAndReference { name: mutation.collection_name.clone(), @@ -204,7 +206,7 @@ pub fn translate( } /// Translate a single update object into a mapping from column names to values. -fn parse_set( +fn parse_update_columns( env: &crate::translation::helpers::Env, state: &mut crate::translation::helpers::State, mutation: &UpdateByKey, @@ -214,11 +216,12 @@ fn parse_set( match object { serde_json::Value::Object(object) => { - // For each field, look up the column name in the table and update it and the value into the map. + // For each field, look up the column name in the table + // and update it and the value into the map. for (name, value) in object { let column_info = mutation - .columns + .table_columns .get(name) .ok_or(Error::ColumnNotFoundInCollection( name.clone(), @@ -227,26 +230,23 @@ fn parse_set( columns_to_values.insert( sql::ast::ColumnName(column_info.name.clone()), - sql::ast::MutationValueExpression::Expression(translate_json_value( - env, - state, - value, - &column_info.r#type, - )?), + parse_update_column(env, state, name, column_info, value)?, ); } Ok(()) } - serde_json::Value::Array(_) => Err(Error::UnexpectedStructure( - "array structure in update _set argument. Expecting an object.".to_string(), - )), - _ => Err(Error::UnexpectedStructure( - "value structure in update _set argument. Expecting an object.".to_string(), - )), + serde_json::Value::Array(_) => Err(Error::UnexpectedStructure(format!( + "array structure in update '{}' argument. Expecting an object.", + mutation.update_columns_argument_name + ))), + _ => Err(Error::UnexpectedStructure(format!( + "value structure in update '{}' argument. Expecting an object.", + mutation.update_columns_argument_name + ))), }?; check_columns::check_columns( - &mutation.columns, + &mutation.table_columns, &columns_to_values, &mutation.collection_name, &check_columns::CheckMissingColumns::No, @@ -254,3 +254,55 @@ fn parse_set( Ok(columns_to_values) } + +/// Translate the operation object of a column to a mutation value expression. +fn parse_update_column( + env: &crate::translation::helpers::Env, + state: &mut crate::translation::helpers::State, + column_name: &str, + column_info: &metadata::database::ColumnInfo, + object: &serde_json::Value, +) -> Result { + match object { + serde_json::Value::Object(object) => { + let vec = object.into_iter().collect::>(); + + // We expect exactly one operation. + match vec.first() { + None => Err(unexpected_operation_error(column_name, vec.len())), + Some((operation, value)) => { + if vec.len() != 1 { + Err(unexpected_operation_error(column_name, vec.len()))?; + } + // _set operation. + if *operation == "_set" { + Ok(sql::ast::MutationValueExpression::Expression( + translate_json_value(env, state, value, &column_info.r#type)?, + )) + } + // Operation is not supported. + else { + Err(Error::UnexpectedOperation { + column_name: column_name.to_string(), + operation: (*operation).clone(), + available_operations: vec!["_set".to_string()], + }) + } + } + } + } + // Unexpected structures. + serde_json::Value::Array(_) => Err(Error::UnexpectedStructure(format!( + "array structure in update column '{column_name}' argument. Expecting an object.", + ))), + _ => Err(Error::UnexpectedStructure(format!( + "value structure in update '{column_name}' argument. Expecting an object.", + ))), + } +} + +fn unexpected_operation_error(column_name: &str, len: usize) -> Error { + Error::UnexpectedStructure( + format!("Column mapping in update for column '{column_name}' should contain exactly 1 operation, but got {len}.") + ) +} diff --git a/crates/tests/databases-tests/src/postgres/snapshots/databases_tests__postgres__schema_tests__schema_test__get_schema.snap b/crates/tests/databases-tests/src/postgres/snapshots/databases_tests__postgres__schema_tests__schema_test__get_schema.snap index 3c762558..bea0dc02 100644 --- a/crates/tests/databases-tests/src/postgres/snapshots/databases_tests__postgres__schema_tests__schema_test__get_schema.snap +++ b/crates/tests/databases-tests/src/postgres/snapshots/databases_tests__postgres__schema_tests__schema_test__get_schema.snap @@ -4913,30 +4913,56 @@ expression: result } } }, - "experimental_update_Album_by_AlbumId_object": { + "experimental_update_Album_by_AlbumId_response": { + "description": "Responses from the 'experimental_update_Album_by_AlbumId' procedure", "fields": { - "AlbumId": { + "affected_rows": { + "description": "The number of rows affected by the mutation", "type": { "type": "named", "name": "int4" } }, + "returning": { + "description": "Data from rows affected by the mutation", + "type": { + "type": "array", + "element_type": { + "type": "named", + "name": "Album" + } + } + } + } + }, + "experimental_update_Album_by_AlbumId_update_columns": { + "description": "Update the columns of the 'Album' collection", + "fields": { + "AlbumId": { + "description": "Update the 'AlbumId' column in the 'Album' collection.", + "type": { + "type": "named", + "name": "update_column_Album_AlbumId" + } + }, "ArtistId": { + "description": "Update the 'ArtistId' column in the 'Album' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Album_ArtistId" } }, "Title": { + "description": "Update the 'Title' column in the 'Album' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Album_Title" } } } }, - "experimental_update_Album_by_AlbumId_response": { - "description": "Responses from the 'experimental_update_Album_by_AlbumId' procedure", + "experimental_update_Artist_by_ArtistId_response": { + "description": "Responses from the 'experimental_update_Artist_by_ArtistId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -4951,33 +4977,33 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Album" + "name": "Artist" } } } } }, - "experimental_update_Artist_by_ArtistId_object": { + "experimental_update_Artist_by_ArtistId_update_columns": { + "description": "Update the columns of the 'Artist' collection", "fields": { "ArtistId": { + "description": "Update the 'ArtistId' column in the 'Artist' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Artist_ArtistId" } }, "Name": { + "description": "Update the 'Name' column in the 'Artist' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Artist_Name" } } } }, - "experimental_update_Artist_by_ArtistId_response": { - "description": "Responses from the 'experimental_update_Artist_by_ArtistId' procedure", + "experimental_update_Customer_by_CustomerId_response": { + "description": "Responses from the 'experimental_update_Customer_by_CustomerId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -4992,123 +5018,110 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Artist" + "name": "Customer" } } } } }, - "experimental_update_Customer_by_CustomerId_object": { + "experimental_update_Customer_by_CustomerId_update_columns": { + "description": "Update the columns of the 'Customer' collection", "fields": { "Address": { + "description": "Update the 'Address' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_Address" } }, "City": { + "description": "Update the 'City' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_City" } }, "Company": { + "description": "Update the 'Company' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_Company" } }, "Country": { + "description": "Update the 'Country' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_Country" } }, "CustomerId": { + "description": "Update the 'CustomerId' column in the 'Customer' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Customer_CustomerId" } }, "Email": { + "description": "Update the 'Email' column in the 'Customer' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Customer_Email" } }, "Fax": { + "description": "Update the 'Fax' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_Fax" } }, "FirstName": { + "description": "Update the 'FirstName' column in the 'Customer' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Customer_FirstName" } }, "LastName": { + "description": "Update the 'LastName' column in the 'Customer' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Customer_LastName" } }, "Phone": { + "description": "Update the 'Phone' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_Phone" } }, "PostalCode": { + "description": "Update the 'PostalCode' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_PostalCode" } }, "State": { + "description": "Update the 'State' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Customer_State" } }, "SupportRepId": { + "description": "Update the 'SupportRepId' column in the 'Customer' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } + "type": "named", + "name": "update_column_Customer_SupportRepId" } } } }, - "experimental_update_Customer_by_CustomerId_response": { - "description": "Responses from the 'experimental_update_Customer_by_CustomerId' procedure", + "experimental_update_Employee_by_EmployeeId_response": { + "description": "Responses from the 'experimental_update_Employee_by_EmployeeId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5123,144 +5136,124 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Customer" + "name": "Employee" } } } } }, - "experimental_update_Employee_by_EmployeeId_object": { + "experimental_update_Employee_by_EmployeeId_update_columns": { + "description": "Update the columns of the 'Employee' collection", "fields": { "Address": { + "description": "Update the 'Address' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_Address" } }, "BirthDate": { + "description": "Update the 'BirthDate' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "timestamp" - } + "type": "named", + "name": "update_column_Employee_BirthDate" } }, "City": { + "description": "Update the 'City' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_City" } }, "Country": { + "description": "Update the 'Country' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_Country" } }, "Email": { + "description": "Update the 'Email' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_Email" } }, "EmployeeId": { + "description": "Update the 'EmployeeId' column in the 'Employee' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Employee_EmployeeId" } }, "Fax": { + "description": "Update the 'Fax' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_Fax" } }, "FirstName": { + "description": "Update the 'FirstName' column in the 'Employee' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Employee_FirstName" } }, "HireDate": { + "description": "Update the 'HireDate' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "timestamp" - } + "type": "named", + "name": "update_column_Employee_HireDate" } }, "LastName": { + "description": "Update the 'LastName' column in the 'Employee' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Employee_LastName" } }, "Phone": { + "description": "Update the 'Phone' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_Phone" } }, "PostalCode": { + "description": "Update the 'PostalCode' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_PostalCode" } }, "ReportsTo": { + "description": "Update the 'ReportsTo' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } + "type": "named", + "name": "update_column_Employee_ReportsTo" } }, "State": { + "description": "Update the 'State' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_State" } }, "Title": { + "description": "Update the 'Title' column in the 'Employee' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Employee_Title" } } } }, - "experimental_update_Employee_by_EmployeeId_response": { - "description": "Responses from the 'experimental_update_Employee_by_EmployeeId' procedure", + "experimental_update_Genre_by_GenreId_response": { + "description": "Responses from the 'experimental_update_Genre_by_GenreId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5275,33 +5268,33 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Employee" + "name": "Genre" } } } } }, - "experimental_update_Genre_by_GenreId_object": { + "experimental_update_Genre_by_GenreId_update_columns": { + "description": "Update the columns of the 'Genre' collection", "fields": { "GenreId": { + "description": "Update the 'GenreId' column in the 'Genre' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Genre_GenreId" } }, "Name": { + "description": "Update the 'Name' column in the 'Genre' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Genre_Name" } } } }, - "experimental_update_Genre_by_GenreId_response": { - "description": "Responses from the 'experimental_update_Genre_by_GenreId' procedure", + "experimental_update_InvoiceLine_by_InvoiceLineId_response": { + "description": "Responses from the 'experimental_update_InvoiceLine_by_InvoiceLineId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5316,48 +5309,54 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Genre" + "name": "InvoiceLine" } } } } }, - "experimental_update_InvoiceLine_by_InvoiceLineId_object": { + "experimental_update_InvoiceLine_by_InvoiceLineId_update_columns": { + "description": "Update the columns of the 'InvoiceLine' collection", "fields": { "InvoiceId": { + "description": "Update the 'InvoiceId' column in the 'InvoiceLine' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_InvoiceLine_InvoiceId" } }, "InvoiceLineId": { + "description": "Update the 'InvoiceLineId' column in the 'InvoiceLine' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_InvoiceLine_InvoiceLineId" } }, "Quantity": { + "description": "Update the 'Quantity' column in the 'InvoiceLine' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_InvoiceLine_Quantity" } }, "TrackId": { + "description": "Update the 'TrackId' column in the 'InvoiceLine' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_InvoiceLine_TrackId" } }, "UnitPrice": { + "description": "Update the 'UnitPrice' column in the 'InvoiceLine' collection.", "type": { "type": "named", - "name": "numeric" + "name": "update_column_InvoiceLine_UnitPrice" } } } }, - "experimental_update_InvoiceLine_by_InvoiceLineId_response": { - "description": "Responses from the 'experimental_update_InvoiceLine_by_InvoiceLineId' procedure", + "experimental_update_Invoice_by_InvoiceId_response": { + "description": "Responses from the 'experimental_update_Invoice_by_InvoiceId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5372,87 +5371,82 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "InvoiceLine" + "name": "Invoice" } } } } }, - "experimental_update_Invoice_by_InvoiceId_object": { + "experimental_update_Invoice_by_InvoiceId_update_columns": { + "description": "Update the columns of the 'Invoice' collection", "fields": { "BillingAddress": { + "description": "Update the 'BillingAddress' column in the 'Invoice' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Invoice_BillingAddress" } }, "BillingCity": { + "description": "Update the 'BillingCity' column in the 'Invoice' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Invoice_BillingCity" } }, "BillingCountry": { + "description": "Update the 'BillingCountry' column in the 'Invoice' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Invoice_BillingCountry" } }, "BillingPostalCode": { + "description": "Update the 'BillingPostalCode' column in the 'Invoice' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Invoice_BillingPostalCode" } }, "BillingState": { + "description": "Update the 'BillingState' column in the 'Invoice' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Invoice_BillingState" } }, "CustomerId": { + "description": "Update the 'CustomerId' column in the 'Invoice' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Invoice_CustomerId" } }, "InvoiceDate": { + "description": "Update the 'InvoiceDate' column in the 'Invoice' collection.", "type": { "type": "named", - "name": "timestamp" + "name": "update_column_Invoice_InvoiceDate" } }, "InvoiceId": { + "description": "Update the 'InvoiceId' column in the 'Invoice' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Invoice_InvoiceId" } }, "Total": { + "description": "Update the 'Total' column in the 'Invoice' collection.", "type": { "type": "named", - "name": "numeric" + "name": "update_column_Invoice_Total" } } } }, - "experimental_update_Invoice_by_InvoiceId_response": { - "description": "Responses from the 'experimental_update_Invoice_by_InvoiceId' procedure", + "experimental_update_MediaType_by_MediaTypeId_response": { + "description": "Responses from the 'experimental_update_MediaType_by_MediaTypeId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5467,33 +5461,33 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Invoice" + "name": "MediaType" } } } } }, - "experimental_update_MediaType_by_MediaTypeId_object": { + "experimental_update_MediaType_by_MediaTypeId_update_columns": { + "description": "Update the columns of the 'MediaType' collection", "fields": { "MediaTypeId": { + "description": "Update the 'MediaTypeId' column in the 'MediaType' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_MediaType_MediaTypeId" } }, "Name": { + "description": "Update the 'Name' column in the 'MediaType' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_MediaType_Name" } } } }, - "experimental_update_MediaType_by_MediaTypeId_response": { - "description": "Responses from the 'experimental_update_MediaType_by_MediaTypeId' procedure", + "experimental_update_Playlist_by_PlaylistId_response": { + "description": "Responses from the 'experimental_update_Playlist_by_PlaylistId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5508,33 +5502,33 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "MediaType" + "name": "Playlist" } } } } }, - "experimental_update_Playlist_by_PlaylistId_object": { + "experimental_update_Playlist_by_PlaylistId_update_columns": { + "description": "Update the columns of the 'Playlist' collection", "fields": { "Name": { + "description": "Update the 'Name' column in the 'Playlist' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Playlist_Name" } }, "PlaylistId": { + "description": "Update the 'PlaylistId' column in the 'Playlist' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Playlist_PlaylistId" } } } }, - "experimental_update_Playlist_by_PlaylistId_response": { - "description": "Responses from the 'experimental_update_Playlist_by_PlaylistId' procedure", + "experimental_update_Track_by_TrackId_response": { + "description": "Responses from the 'experimental_update_Track_by_TrackId' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5549,84 +5543,82 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Playlist" + "name": "Track" } } } } }, - "experimental_update_Track_by_TrackId_object": { + "experimental_update_Track_by_TrackId_update_columns": { + "description": "Update the columns of the 'Track' collection", "fields": { "AlbumId": { + "description": "Update the 'AlbumId' column in the 'Track' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } + "type": "named", + "name": "update_column_Track_AlbumId" } }, "Bytes": { + "description": "Update the 'Bytes' column in the 'Track' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } + "type": "named", + "name": "update_column_Track_Bytes" } }, "Composer": { + "description": "Update the 'Composer' column in the 'Track' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_Track_Composer" } }, "GenreId": { + "description": "Update the 'GenreId' column in the 'Track' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } + "type": "named", + "name": "update_column_Track_GenreId" } }, "MediaTypeId": { + "description": "Update the 'MediaTypeId' column in the 'Track' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Track_MediaTypeId" } }, "Milliseconds": { + "description": "Update the 'Milliseconds' column in the 'Track' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Track_Milliseconds" } }, "Name": { + "description": "Update the 'Name' column in the 'Track' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_Track_Name" } }, "TrackId": { + "description": "Update the 'TrackId' column in the 'Track' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_Track_TrackId" } }, "UnitPrice": { + "description": "Update the 'UnitPrice' column in the 'Track' collection.", "type": { "type": "named", - "name": "numeric" + "name": "update_column_Track_UnitPrice" } } } }, - "experimental_update_Track_by_TrackId_response": { - "description": "Responses from the 'experimental_update_Track_by_TrackId' procedure", + "experimental_update_custom_defaults_by_id_response": { + "description": "Responses from the 'experimental_update_custom_defaults_by_id' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5641,39 +5633,54 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "Track" + "name": "custom_defaults" } } } } }, - "experimental_update_custom_defaults_by_id_object": { + "experimental_update_custom_defaults_by_id_update_columns": { + "description": "Update the columns of the 'custom_defaults' collection", "fields": { "birthday": { + "description": "Update the 'birthday' column in the 'custom_defaults' collection.", "type": { "type": "named", - "name": "date" + "name": "update_column_custom_defaults_birthday" } }, "height_cm": { + "description": "Update the 'height_cm' column in the 'custom_defaults' collection.", "type": { "type": "named", - "name": "numeric" + "name": "update_column_custom_defaults_height_cm" + } + }, + "height_in": { + "description": "Update the 'height_in' column in the 'custom_defaults' collection.", + "type": { + "type": "named", + "name": "update_column_custom_defaults_height_in" + } + }, + "id": { + "description": "Update the 'id' column in the 'custom_defaults' collection.", + "type": { + "type": "named", + "name": "update_column_custom_defaults_id" } }, "name": { + "description": "Update the 'name' column in the 'custom_defaults' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "text" - } + "type": "named", + "name": "update_column_custom_defaults_name" } } } }, - "experimental_update_custom_defaults_by_id_response": { - "description": "Responses from the 'experimental_update_custom_defaults_by_id' procedure", + "experimental_update_custom_dog_by_id_response": { + "description": "Responses from the 'experimental_update_custom_dog_by_id' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5688,45 +5695,61 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "custom_defaults" + "name": "custom_dog" } } } } }, - "experimental_update_custom_dog_by_id_object": { + "experimental_update_custom_dog_by_id_update_columns": { + "description": "Update the columns of the 'custom_dog' collection", "fields": { "adopter_name": { + "description": "Update the 'adopter_name' column in the 'custom_dog' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "text" - } + "type": "named", + "name": "update_column_custom_dog_adopter_name" } }, "birthday": { + "description": "Update the 'birthday' column in the 'custom_dog' collection.", "type": { "type": "named", - "name": "date" + "name": "update_column_custom_dog_birthday" } }, "height_cm": { + "description": "Update the 'height_cm' column in the 'custom_dog' collection.", "type": { "type": "named", - "name": "numeric" + "name": "update_column_custom_dog_height_cm" + } + }, + "height_in": { + "description": "Update the 'height_in' column in the 'custom_dog' collection.", + "type": { + "type": "named", + "name": "update_column_custom_dog_height_in" + } + }, + "id": { + "description": "Update the 'id' column in the 'custom_dog' collection.", + "type": { + "type": "named", + "name": "update_column_custom_dog_id" } }, "name": { + "description": "Update the 'name' column in the 'custom_dog' collection.", "type": { "type": "named", - "name": "text" + "name": "update_column_custom_dog_name" } } } }, - "experimental_update_custom_dog_by_id_response": { - "description": "Responses from the 'experimental_update_custom_dog_by_id' procedure", + "experimental_update_spatial_ref_sys_by_srid_response": { + "description": "Responses from the 'experimental_update_spatial_ref_sys_by_srid' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5741,60 +5764,54 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "custom_dog" + "name": "spatial_ref_sys" } } } } }, - "experimental_update_spatial_ref_sys_by_srid_object": { + "experimental_update_spatial_ref_sys_by_srid_update_columns": { + "description": "Update the columns of the 'spatial_ref_sys' collection", "fields": { "auth_name": { + "description": "Update the 'auth_name' column in the 'spatial_ref_sys' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_spatial_ref_sys_auth_name" } }, "auth_srid": { + "description": "Update the 'auth_srid' column in the 'spatial_ref_sys' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } + "type": "named", + "name": "update_column_spatial_ref_sys_auth_srid" } }, "proj4text": { + "description": "Update the 'proj4text' column in the 'spatial_ref_sys' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_spatial_ref_sys_proj4text" } }, "srid": { + "description": "Update the 'srid' column in the 'spatial_ref_sys' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_spatial_ref_sys_srid" } }, "srtext": { + "description": "Update the 'srtext' column in the 'spatial_ref_sys' collection.", "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } + "type": "named", + "name": "update_column_spatial_ref_sys_srtext" } } } }, - "experimental_update_spatial_ref_sys_by_srid_response": { - "description": "Responses from the 'experimental_update_spatial_ref_sys_by_srid' procedure", + "experimental_update_topology_topology_by_id_response": { + "description": "Responses from the 'experimental_update_topology_topology_by_id' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5809,48 +5826,54 @@ expression: result "type": "array", "element_type": { "type": "named", - "name": "spatial_ref_sys" + "name": "topology_topology" } } } } }, - "experimental_update_topology_topology_by_id_object": { + "experimental_update_topology_topology_by_id_update_columns": { + "description": "Update the columns of the 'topology_topology' collection", "fields": { "hasz": { + "description": "Update the 'hasz' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "bool" + "name": "update_column_topology_topology_hasz" } }, "id": { + "description": "Update the 'id' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_topology_topology_id" } }, "name": { + "description": "Update the 'name' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_topology_topology_name" } }, "precision": { + "description": "Update the 'precision' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "float8" + "name": "update_column_topology_topology_precision" } }, "srid": { + "description": "Update the 'srid' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_topology_topology_srid" } } } }, - "experimental_update_topology_topology_by_id_response": { - "description": "Responses from the 'experimental_update_topology_topology_by_id' procedure", + "experimental_update_topology_topology_by_name_response": { + "description": "Responses from the 'experimental_update_topology_topology_by_name' procedure", "fields": { "affected_rows": { "description": "The number of rows affected by the mutation", @@ -5871,58 +5894,42 @@ expression: result } } }, - "experimental_update_topology_topology_by_name_object": { + "experimental_update_topology_topology_by_name_update_columns": { + "description": "Update the columns of the 'topology_topology' collection", "fields": { "hasz": { + "description": "Update the 'hasz' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "bool" + "name": "update_column_topology_topology_hasz" } }, "id": { + "description": "Update the 'id' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "int4" + "name": "update_column_topology_topology_id" } }, "name": { + "description": "Update the 'name' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "varchar" + "name": "update_column_topology_topology_name" } }, "precision": { + "description": "Update the 'precision' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "float8" + "name": "update_column_topology_topology_precision" } }, "srid": { + "description": "Update the 'srid' column in the 'topology_topology' collection.", "type": { "type": "named", - "name": "int4" - } - } - } - }, - "experimental_update_topology_topology_by_name_response": { - "description": "Responses from the 'experimental_update_topology_topology_by_name' procedure", - "fields": { - "affected_rows": { - "description": "The number of rows affected by the mutation", - "type": { - "type": "named", - "name": "int4" - } - }, - "returning": { - "description": "Data from rows affected by the mutation", - "type": { - "type": "array", - "element_type": { - "type": "named", - "name": "topology_topology" - } + "name": "update_column_topology_topology_srid" } } } @@ -6161,14 +6168,1155 @@ expression: result "the_number": { "type": { "type": "named", - "name": "Phone" + "name": "Phone" + } + } + } + }, + "spatial_ref_sys": { + "fields": { + "auth_name": { + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + }, + "auth_srid": { + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + }, + "proj4text": { + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + }, + "srid": { + "type": { + "type": "named", + "name": "int4" + } + }, + "srtext": { + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "summarize_organizations": { + "description": "A native query used to test support array-valued variables", + "fields": { + "result": { + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "text" + } + } + } + } + }, + "topology_layer": { + "fields": { + "child_id": { + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + }, + "feature_column": { + "type": { + "type": "named", + "name": "varchar" + } + }, + "feature_type": { + "type": { + "type": "named", + "name": "int4" + } + }, + "layer_id": { + "type": { + "type": "named", + "name": "int4" + } + }, + "level": { + "type": { + "type": "named", + "name": "int4" + } + }, + "schema_name": { + "type": { + "type": "named", + "name": "varchar" + } + }, + "table_name": { + "type": { + "type": "named", + "name": "varchar" + } + }, + "topology_id": { + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "topology_topology": { + "fields": { + "hasz": { + "type": { + "type": "named", + "name": "bool" + } + }, + "id": { + "type": { + "type": "named", + "name": "int4" + } + }, + "name": { + "type": { + "type": "named", + "name": "varchar" + } + }, + "precision": { + "type": { + "type": "named", + "name": "float8" + } + }, + "srid": { + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Album_AlbumId": { + "description": "Update the 'AlbumId' column in the 'Album' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Album_ArtistId": { + "description": "Update the 'ArtistId' column in the 'Album' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Album_Title": { + "description": "Update the 'Title' column in the 'Album' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Artist_ArtistId": { + "description": "Update the 'ArtistId' column in the 'Artist' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Artist_Name": { + "description": "Update the 'Name' column in the 'Artist' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_Address": { + "description": "Update the 'Address' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_City": { + "description": "Update the 'City' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_Company": { + "description": "Update the 'Company' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_Country": { + "description": "Update the 'Country' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_CustomerId": { + "description": "Update the 'CustomerId' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Customer_Email": { + "description": "Update the 'Email' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Customer_Fax": { + "description": "Update the 'Fax' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_FirstName": { + "description": "Update the 'FirstName' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Customer_LastName": { + "description": "Update the 'LastName' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Customer_Phone": { + "description": "Update the 'Phone' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_PostalCode": { + "description": "Update the 'PostalCode' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_State": { + "description": "Update the 'State' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Customer_SupportRepId": { + "description": "Update the 'SupportRepId' column in the 'Customer' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + } + } + }, + "update_column_Employee_Address": { + "description": "Update the 'Address' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_BirthDate": { + "description": "Update the 'BirthDate' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "timestamp" + } + } + } + } + }, + "update_column_Employee_City": { + "description": "Update the 'City' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_Country": { + "description": "Update the 'Country' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_Email": { + "description": "Update the 'Email' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_EmployeeId": { + "description": "Update the 'EmployeeId' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Employee_Fax": { + "description": "Update the 'Fax' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_FirstName": { + "description": "Update the 'FirstName' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Employee_HireDate": { + "description": "Update the 'HireDate' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "timestamp" + } + } + } + } + }, + "update_column_Employee_LastName": { + "description": "Update the 'LastName' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Employee_Phone": { + "description": "Update the 'Phone' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_PostalCode": { + "description": "Update the 'PostalCode' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_ReportsTo": { + "description": "Update the 'ReportsTo' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + } + } + }, + "update_column_Employee_State": { + "description": "Update the 'State' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Employee_Title": { + "description": "Update the 'Title' column in the 'Employee' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Genre_GenreId": { + "description": "Update the 'GenreId' column in the 'Genre' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Genre_Name": { + "description": "Update the 'Name' column in the 'Genre' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_InvoiceLine_InvoiceId": { + "description": "Update the 'InvoiceId' column in the 'InvoiceLine' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_InvoiceLine_InvoiceLineId": { + "description": "Update the 'InvoiceLineId' column in the 'InvoiceLine' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_InvoiceLine_Quantity": { + "description": "Update the 'Quantity' column in the 'InvoiceLine' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_InvoiceLine_TrackId": { + "description": "Update the 'TrackId' column in the 'InvoiceLine' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_InvoiceLine_UnitPrice": { + "description": "Update the 'UnitPrice' column in the 'InvoiceLine' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "numeric" + } + } + } + }, + "update_column_Invoice_BillingAddress": { + "description": "Update the 'BillingAddress' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Invoice_BillingCity": { + "description": "Update the 'BillingCity' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Invoice_BillingCountry": { + "description": "Update the 'BillingCountry' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Invoice_BillingPostalCode": { + "description": "Update the 'BillingPostalCode' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Invoice_BillingState": { + "description": "Update the 'BillingState' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Invoice_CustomerId": { + "description": "Update the 'CustomerId' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Invoice_InvoiceDate": { + "description": "Update the 'InvoiceDate' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "timestamp" + } + } + } + }, + "update_column_Invoice_InvoiceId": { + "description": "Update the 'InvoiceId' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Invoice_Total": { + "description": "Update the 'Total' column in the 'Invoice' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "numeric" + } + } + } + }, + "update_column_MediaType_MediaTypeId": { + "description": "Update the 'MediaTypeId' column in the 'MediaType' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_MediaType_Name": { + "description": "Update the 'Name' column in the 'MediaType' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Playlist_Name": { + "description": "Update the 'Name' column in the 'Playlist' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Playlist_PlaylistId": { + "description": "Update the 'PlaylistId' column in the 'Playlist' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Track_AlbumId": { + "description": "Update the 'AlbumId' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + } + } + }, + "update_column_Track_Bytes": { + "description": "Update the 'Bytes' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + } + } + }, + "update_column_Track_Composer": { + "description": "Update the 'Composer' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "varchar" + } + } + } + } + }, + "update_column_Track_GenreId": { + "description": "Update the 'GenreId' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "int4" + } + } + } + } + }, + "update_column_Track_MediaTypeId": { + "description": "Update the 'MediaTypeId' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Track_Milliseconds": { + "description": "Update the 'Milliseconds' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Track_Name": { + "description": "Update the 'Name' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "varchar" + } + } + } + }, + "update_column_Track_TrackId": { + "description": "Update the 'TrackId' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int4" + } + } + } + }, + "update_column_Track_UnitPrice": { + "description": "Update the 'UnitPrice' column in the 'Track' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "numeric" + } + } + } + }, + "update_column_custom_defaults_birthday": { + "description": "Update the 'birthday' column in the 'custom_defaults' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "date" + } + } + } + }, + "update_column_custom_defaults_height_cm": { + "description": "Update the 'height_cm' column in the 'custom_defaults' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "numeric" + } + } + } + }, + "update_column_custom_defaults_height_in": { + "description": "Update the 'height_in' column in the 'custom_defaults' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "numeric" + } + } + } + } + }, + "update_column_custom_defaults_id": { + "description": "Update the 'id' column in the 'custom_defaults' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int8" + } + } + } + }, + "update_column_custom_defaults_name": { + "description": "Update the 'name' column in the 'custom_defaults' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "text" + } + } + } + } + }, + "update_column_custom_dog_adopter_name": { + "description": "Update the 'adopter_name' column in the 'custom_dog' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "text" + } + } + } + } + }, + "update_column_custom_dog_birthday": { + "description": "Update the 'birthday' column in the 'custom_dog' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "date" + } + } + } + }, + "update_column_custom_dog_height_cm": { + "description": "Update the 'height_cm' column in the 'custom_dog' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "numeric" + } + } + } + }, + "update_column_custom_dog_height_in": { + "description": "Update the 'height_in' column in the 'custom_dog' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "nullable", + "underlying_type": { + "type": "named", + "name": "numeric" + } + } + } + } + }, + "update_column_custom_dog_id": { + "description": "Update the 'id' column in the 'custom_dog' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "int8" + } + } + } + }, + "update_column_custom_dog_name": { + "description": "Update the 'name' column in the 'custom_dog' collection", + "fields": { + "_set": { + "description": "Set the column to this value", + "type": { + "type": "named", + "name": "text" } } } }, - "spatial_ref_sys": { + "update_column_spatial_ref_sys_auth_name": { + "description": "Update the 'auth_name' column in the 'spatial_ref_sys' collection", "fields": { - "auth_name": { + "_set": { + "description": "Set the column to this value", "type": { "type": "nullable", "underlying_type": { @@ -6176,8 +7324,14 @@ expression: result "name": "varchar" } } - }, - "auth_srid": { + } + } + }, + "update_column_spatial_ref_sys_auth_srid": { + "description": "Update the 'auth_srid' column in the 'spatial_ref_sys' collection", + "fields": { + "_set": { + "description": "Set the column to this value", "type": { "type": "nullable", "underlying_type": { @@ -6185,8 +7339,14 @@ expression: result "name": "int4" } } - }, - "proj4text": { + } + } + }, + "update_column_spatial_ref_sys_proj4text": { + "description": "Update the 'proj4text' column in the 'spatial_ref_sys' collection", + "fields": { + "_set": { + "description": "Set the column to this value", "type": { "type": "nullable", "underlying_type": { @@ -6194,120 +7354,89 @@ expression: result "name": "varchar" } } - }, - "srid": { + } + } + }, + "update_column_spatial_ref_sys_srid": { + "description": "Update the 'srid' column in the 'spatial_ref_sys' collection", + "fields": { + "_set": { + "description": "Set the column to this value", "type": { "type": "named", "name": "int4" } - }, - "srtext": { - "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "varchar" - } - } } } }, - "summarize_organizations": { - "description": "A native query used to test support array-valued variables", + "update_column_spatial_ref_sys_srtext": { + "description": "Update the 'srtext' column in the 'spatial_ref_sys' collection", "fields": { - "result": { + "_set": { + "description": "Set the column to this value", "type": { "type": "nullable", "underlying_type": { "type": "named", - "name": "text" + "name": "varchar" } } } } }, - "topology_layer": { + "update_column_topology_topology_hasz": { + "description": "Update the 'hasz' column in the 'topology_topology' collection", "fields": { - "child_id": { - "type": { - "type": "nullable", - "underlying_type": { - "type": "named", - "name": "int4" - } - } - }, - "feature_column": { - "type": { - "type": "named", - "name": "varchar" - } - }, - "feature_type": { - "type": { - "type": "named", - "name": "int4" - } - }, - "layer_id": { - "type": { - "type": "named", - "name": "int4" - } - }, - "level": { - "type": { - "type": "named", - "name": "int4" - } - }, - "schema_name": { - "type": { - "type": "named", - "name": "varchar" - } - }, - "table_name": { - "type": { - "type": "named", - "name": "varchar" - } - }, - "topology_id": { + "_set": { + "description": "Set the column to this value", "type": { "type": "named", - "name": "int4" + "name": "bool" } } } }, - "topology_topology": { + "update_column_topology_topology_id": { + "description": "Update the 'id' column in the 'topology_topology' collection", "fields": { - "hasz": { - "type": { - "type": "named", - "name": "bool" - } - }, - "id": { + "_set": { + "description": "Set the column to this value", "type": { "type": "named", "name": "int4" } - }, - "name": { + } + } + }, + "update_column_topology_topology_name": { + "description": "Update the 'name' column in the 'topology_topology' collection", + "fields": { + "_set": { + "description": "Set the column to this value", "type": { "type": "named", "name": "varchar" } - }, - "precision": { + } + } + }, + "update_column_topology_topology_precision": { + "description": "Update the 'precision' column in the 'topology_topology' collection", + "fields": { + "_set": { + "description": "Set the column to this value", "type": { "type": "named", "name": "float8" } - }, - "srid": { + } + } + }, + "update_column_topology_topology_srid": { + "description": "Update the 'srid' column in the 'topology_topology' collection", + "fields": { + "_set": { + "description": "Set the column to this value", "type": { "type": "named", "name": "int4" @@ -8147,12 +9276,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Album_by_AlbumId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Album' collection", "type": { @@ -8166,6 +9289,12 @@ expression: result "type": "predicate", "object_type_name": "Album" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Album_by_AlbumId_update_columns" + } } }, "result_type": { @@ -8184,12 +9313,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Artist_by_ArtistId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Artist' collection", "type": { @@ -8203,6 +9326,12 @@ expression: result "type": "predicate", "object_type_name": "Artist" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Artist_by_ArtistId_update_columns" + } } }, "result_type": { @@ -8221,12 +9350,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Customer_by_CustomerId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Customer' collection", "type": { @@ -8240,6 +9363,12 @@ expression: result "type": "predicate", "object_type_name": "Customer" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Customer_by_CustomerId_update_columns" + } } }, "result_type": { @@ -8257,12 +9386,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Employee_by_EmployeeId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Employee' collection", "type": { @@ -8276,6 +9399,12 @@ expression: result "type": "predicate", "object_type_name": "Employee" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Employee_by_EmployeeId_update_columns" + } } }, "result_type": { @@ -8293,12 +9422,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Genre_by_GenreId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Genre' collection", "type": { @@ -8312,6 +9435,12 @@ expression: result "type": "predicate", "object_type_name": "Genre" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Genre_by_GenreId_update_columns" + } } }, "result_type": { @@ -8329,12 +9458,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_InvoiceLine_by_InvoiceLineId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'InvoiceLine' collection", "type": { @@ -8348,6 +9471,12 @@ expression: result "type": "predicate", "object_type_name": "InvoiceLine" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_InvoiceLine_by_InvoiceLineId_update_columns" + } } }, "result_type": { @@ -8365,12 +9494,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Invoice_by_InvoiceId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Invoice' collection", "type": { @@ -8384,6 +9507,12 @@ expression: result "type": "predicate", "object_type_name": "Invoice" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Invoice_by_InvoiceId_update_columns" + } } }, "result_type": { @@ -8401,12 +9530,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_MediaType_by_MediaTypeId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'MediaType' collection", "type": { @@ -8420,6 +9543,12 @@ expression: result "type": "predicate", "object_type_name": "MediaType" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_MediaType_by_MediaTypeId_update_columns" + } } }, "result_type": { @@ -8437,12 +9566,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Playlist_by_PlaylistId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Playlist' collection", "type": { @@ -8456,6 +9579,12 @@ expression: result "type": "predicate", "object_type_name": "Playlist" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Playlist_by_PlaylistId_update_columns" + } } }, "result_type": { @@ -8473,12 +9602,6 @@ expression: result "name": "int4" } }, - "_set": { - "type": { - "type": "named", - "name": "experimental_update_Track_by_TrackId_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'Track' collection", "type": { @@ -8492,6 +9615,12 @@ expression: result "type": "predicate", "object_type_name": "Track" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_Track_by_TrackId_update_columns" + } } }, "result_type": { @@ -8503,12 +9632,6 @@ expression: result "name": "experimental_update_custom_defaults_by_id", "description": "Update any row on the 'custom_defaults' collection using the 'id' key", "arguments": { - "_set": { - "type": { - "type": "named", - "name": "experimental_update_custom_defaults_by_id_object" - } - }, "id": { "type": { "type": "named", @@ -8528,6 +9651,12 @@ expression: result "type": "predicate", "object_type_name": "custom_defaults" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_custom_defaults_by_id_update_columns" + } } }, "result_type": { @@ -8539,12 +9668,6 @@ expression: result "name": "experimental_update_custom_dog_by_id", "description": "Update any row on the 'custom_dog' collection using the 'id' key", "arguments": { - "_set": { - "type": { - "type": "named", - "name": "experimental_update_custom_dog_by_id_object" - } - }, "id": { "type": { "type": "named", @@ -8564,6 +9687,12 @@ expression: result "type": "predicate", "object_type_name": "custom_dog" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_custom_dog_by_id_update_columns" + } } }, "result_type": { @@ -8575,12 +9704,6 @@ expression: result "name": "experimental_update_spatial_ref_sys_by_srid", "description": "Update any row on the 'spatial_ref_sys' collection using the 'srid' key", "arguments": { - "_set": { - "type": { - "type": "named", - "name": "experimental_update_spatial_ref_sys_by_srid_object" - } - }, "post_check": { "description": "Update permission post-condition predicate over the 'spatial_ref_sys' collection", "type": { @@ -8600,6 +9723,12 @@ expression: result "type": "named", "name": "int4" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_spatial_ref_sys_by_srid_update_columns" + } } }, "result_type": { @@ -8611,12 +9740,6 @@ expression: result "name": "experimental_update_topology_topology_by_id", "description": "Update any row on the 'topology_topology' collection using the 'id' key", "arguments": { - "_set": { - "type": { - "type": "named", - "name": "experimental_update_topology_topology_by_id_object" - } - }, "id": { "type": { "type": "named", @@ -8636,6 +9759,12 @@ expression: result "type": "predicate", "object_type_name": "topology_topology" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_topology_topology_by_id_update_columns" + } } }, "result_type": { @@ -8647,12 +9776,6 @@ expression: result "name": "experimental_update_topology_topology_by_name", "description": "Update any row on the 'topology_topology' collection using the 'name' key", "arguments": { - "_set": { - "type": { - "type": "named", - "name": "experimental_update_topology_topology_by_name_object" - } - }, "name": { "type": { "type": "named", @@ -8672,6 +9795,12 @@ expression: result "type": "predicate", "object_type_name": "topology_topology" } + }, + "update_columns": { + "type": { + "type": "named", + "name": "experimental_update_topology_topology_by_name_update_columns" + } } }, "result_type": { diff --git a/crates/tests/tests-common/goldenfiles/mutations/experimental_insert_update_custom_dog.json b/crates/tests/tests-common/goldenfiles/mutations/experimental_insert_update_custom_dog.json index 8c727925..32c8703a 100644 --- a/crates/tests/tests-common/goldenfiles/mutations/experimental_insert_update_custom_dog.json +++ b/crates/tests/tests-common/goldenfiles/mutations/experimental_insert_update_custom_dog.json @@ -75,9 +75,9 @@ "name": "experimental_update_custom_dog_by_id", "arguments": { "id": 1, - "_set": { - "height_cm": 300, - "adopter_name": "Strauss" + "update_columns": { + "height_cm": { "_set": 300 }, + "adopter_name": { "_set": "Strauss" } }, "pre_check": { "type": "binary_comparison_operator",