Skip to content

Commit b0ebc23

Browse files
felipecrvfa-assistant
authored andcommitted
Move StdColumn from dbt-schemas to dbt-fusion-adapter (#5804)
* Move StdColumn from dbt-schemas to dbt-fusion-adapter * fix branch inversion and use filter() instead of filter_map() * cargo fmt * remove old code * Update crates/dbt-adapter/src/redshift/adapter.rs GitOrigin-RevId: ca1c75890c68332681ccb1d2228dd700c45a27b3
1 parent 6161d2f commit b0ebc23

File tree

9 files changed

+32
-31
lines changed

9 files changed

+32
-31
lines changed

crates/dbt-fusion-adapter/src/base_adapter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::cache::RelationCache;
2+
use crate::columns::{BigqueryColumnMode, StdColumn};
23
use crate::metadata::{CatalogAndSchema, MetadataAdapter};
34
use crate::sql_engine::SqlEngine;
45
use crate::typed_adapter::TypedBaseAdapter;
@@ -10,7 +11,6 @@ use dbt_common::adapter::SchemaRegistry;
1011
use dbt_common::cancellation::CancellationToken;
1112
use dbt_common::io_args::ReplayMode;
1213
use dbt_schemas::schemas::InternalDbtNodeAttributes;
13-
use dbt_schemas::schemas::columns::{BigqueryColumnMode, StdColumn};
1414
use dbt_schemas::schemas::common::ResolvedQuoting;
1515
use dbt_schemas::schemas::project::QueryComment;
1616
use dbt_schemas::schemas::relations::base::{BaseRelation, ComponentName};

crates/dbt-fusion-adapter/src/bridge_adapter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::base_adapter::{AdapterType, AdapterTyping};
22
use crate::cache::RelationCache;
33
use crate::cast_util::downcast_value_to_dyn_base_relation;
4+
use crate::columns::StdColumn;
45
use crate::funcs::{
56
dispatch_adapter_calls, dispatch_adapter_get_value, execute_macro, execute_macro_wrapper,
67
none_value,
@@ -22,7 +23,6 @@ use dbt_common::behavior_flags::{Behavior, BehaviorFlag};
2223
use dbt_common::cancellation::CancellationToken;
2324
use dbt_common::{FsError, FsResult, current_function_name};
2425
use dbt_schemas::schemas::InternalDbtNodeWrapper;
25-
use dbt_schemas::schemas::columns::StdColumn;
2626
use dbt_schemas::schemas::common::{DbtIncrementalStrategy, ResolvedQuoting};
2727
use dbt_schemas::schemas::dbt_column::{DbtColumn, DbtColumnRef};
2828
use dbt_schemas::schemas::manifest::{

crates/dbt-schemas/src/schemas/columns.rs renamed to crates/dbt-fusion-adapter/src/columns.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
use std::sync::Arc;
22

33
use dbt_common::{adapter::AdapterType, current_function_name};
4+
use dbt_schemas::schemas::dbt_column::DbtCoreBaseColumn;
5+
use dbt_schemas::schemas::serde::minijinja_value_to_typed_struct;
6+
use minijinja;
47
use minijinja::{
58
Value,
69
arg_utils::{ArgParser, ArgsIter, check_num_args},
710
value::{Enumerator, Object},
811
};
912
use serde::{Deserialize, Serialize};
1013

11-
use crate::schemas::{dbt_column::DbtColumn, serde::minijinja_value_to_typed_struct};
14+
use dbt_schemas::schemas::dbt_column::DbtColumn;
1215

1316
/// A struct representing a column type for use with static methods
1417
#[derive(Clone, Debug)]
@@ -736,16 +739,3 @@ impl Into<Value> for StdColumn {
736739
Value::from_object(self)
737740
}
738741
}
739-
740-
/// The BaseColumn as implemented by dbt Core.
741-
///
742-
/// This is used to deserialize columns from Jinja that produces them, for example
743-
/// the public API macros for `get_columns_in_relation()`
744-
#[derive(Deserialize, Debug)]
745-
struct DbtCoreBaseColumn {
746-
name: String,
747-
dtype: String,
748-
char_size: Option<u32>,
749-
numeric_precision: Option<u64>,
750-
numeric_scale: Option<u64>,
751-
}

crates/dbt-fusion-adapter/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ mod macros;
77
pub mod base_adapter;
88
pub mod bridge_adapter;
99
pub mod cache;
10+
pub mod columns;
1011
pub mod errors;
1112
pub mod factory;
1213
pub mod formatter;

crates/dbt-fusion-adapter/src/parse/adapter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::base_adapter::{AdapterFactory, AdapterType, AdapterTyping, BaseAdapter, backend_of};
22
use crate::cast_util::downcast_value_to_dyn_base_relation;
3+
use crate::columns::{BigqueryColumnMode, StdColumn, StdColumnType};
34
use crate::funcs::{
45
dispatch_adapter_calls, empty_map_value, empty_mutable_vec_value, empty_string_value,
56
empty_vec_value, none_value,
@@ -22,7 +23,6 @@ use dbt_common::behavior_flags::Behavior;
2223
use dbt_common::cancellation::CancellationToken;
2324
use dbt_common::io_args::ReplayMode;
2425
use dbt_common::{FsError, FsResult, current_function_name};
25-
use dbt_schemas::schemas::columns::{BigqueryColumnMode, StdColumn, StdColumnType};
2626
use dbt_schemas::schemas::common::{DbtQuoting, ResolvedQuoting};
2727
use dbt_schemas::schemas::project::QueryComment;
2828
use dbt_schemas::schemas::relations::base::{BaseRelation, RelationPattern};

crates/dbt-fusion-adapter/src/typed_adapter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::columns::StdColumn;
12
use crate::errors::{AdapterError, AdapterErrorKind};
23
use crate::funcs::{execute_macro, none_value};
34
use crate::metadata::CatalogAndSchema;
@@ -15,7 +16,6 @@ use arrow_schema::{DataType, Schema};
1516
use dbt_common::FsResult;
1617
use dbt_common::behavior_flags::BehaviorFlag;
1718
use dbt_frontend_common::dialect::Dialect;
18-
use dbt_schemas::schemas::columns::StdColumn;
1919
use dbt_schemas::schemas::common::Constraint;
2020
use dbt_schemas::schemas::common::ConstraintSupport;
2121
use dbt_schemas::schemas::common::ConstraintType;

crates/dbt-schemas/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub mod state;
88
pub mod stats;
99

1010
pub mod schemas {
11-
pub mod columns;
1211
pub mod common;
1312
pub mod data_tests;
1413
pub mod dbt_column;

crates/dbt-schemas/src/schemas/dbt_column.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ use crate::schemas::{
1414

1515
use super::{common::Constraint, data_tests::DataTests};
1616

17+
/// The BaseColumn as implemented by dbt Core.
18+
///
19+
/// This is used to deserialize columns from Jinja that produces them, for example
20+
/// the public API macros for `get_columns_in_relation()`
21+
#[derive(Deserialize, Debug)]
22+
pub struct DbtCoreBaseColumn {
23+
pub name: String,
24+
pub dtype: String,
25+
pub char_size: Option<u32>,
26+
pub numeric_precision: Option<u64>,
27+
pub numeric_scale: Option<u64>,
28+
}
29+
1730
#[skip_serializing_none]
1831
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default, Clone)]
1932
#[serde(rename_all = "snake_case")]

crates/dbt-schemas/src/schemas/manifest/bigquery_partition.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use dbt_common::adapter::AdapterType;
21
use dbt_common::current_function_name;
32
use dbt_serde_yaml::{JsonSchema, UntaggedEnumDeserialize};
43
use minijinja::value::Enumerator;
@@ -11,8 +10,6 @@ use minijinja::{
1110
use serde::{Deserialize, Serialize};
1211
use strum::{AsRefStr, Display, EnumIter, EnumString, IntoEnumIterator};
1312

14-
use crate::schemas::columns::StdColumn;
15-
1613
use std::convert::AsRef;
1714
use std::{rc::Rc, sync::Arc};
1815

@@ -167,15 +164,16 @@ impl BigqueryPartitionConfig {
167164
parser.check_num_args(current_function_name!(), 0, 1)?;
168165

169166
let columns = parser.get::<MinijinjaValue>("columns")?;
170-
if let Ok(columns) = StdColumn::vec_from_jinja_value(AdapterType::Bigquery, columns) {
171-
let columns = columns
172-
.into_iter()
173-
.filter_map(|c| {
174-
if c.name.to_uppercase() == self.field.to_uppercase() {
175-
None
176-
} else {
177-
Some(MinijinjaValue::from_object(c))
178-
}
167+
if let Ok(iter) = columns.try_iter() {
168+
let columns = iter
169+
.filter(|c| {
170+
let name = c
171+
.get_attr("name")
172+
.expect("column must have a name attribute");
173+
!name
174+
.as_str()
175+
.expect("name attribute must be a string")
176+
.eq_ignore_ascii_case(self.field.as_str())
179177
})
180178
.collect::<Vec<_>>();
181179
Ok(MinijinjaValue::from(columns))

0 commit comments

Comments
 (0)