Skip to content

Commit a667acb

Browse files
ntjohnson1kosiew
authored andcommitted
Cherry pick from apache#1252
1 parent 81e839f commit a667acb

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

src/common/data_type.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ impl From<PyScalarValue> for ScalarValue {
3737
}
3838

3939
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
40-
#[pyclass(eq, eq_int, name = "RexType", module = "datafusion.common")]
40+
#[pyclass(frozen, eq, eq_int, name = "RexType", module = "datafusion.common")]
4141
pub enum RexType {
4242
Alias,
4343
Literal,
@@ -56,6 +56,7 @@ pub enum RexType {
5656
/// and manageable location. Therefore this structure exists
5757
/// to map those types and provide a simple place for developers
5858
/// to map types from one system to another.
59+
// TODO: This looks like this needs pyo3 tracking so leaving unfrozen for now
5960
#[derive(Debug, Clone)]
6061
#[pyclass(name = "DataTypeMap", module = "datafusion.common", subclass)]
6162
pub struct DataTypeMap {
@@ -577,7 +578,7 @@ impl DataTypeMap {
577578
/// Since `DataType` exists in another package we cannot make that happen here so we wrap
578579
/// `DataType` as `PyDataType` This exists solely to satisfy those constraints.
579580
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
580-
#[pyclass(name = "DataType", module = "datafusion.common")]
581+
#[pyclass(frozen, name = "DataType", module = "datafusion.common")]
581582
pub struct PyDataType {
582583
pub data_type: DataType,
583584
}
@@ -635,7 +636,7 @@ impl From<DataType> for PyDataType {
635636

636637
/// Represents the possible Python types that can be mapped to the SQL types
637638
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
638-
#[pyclass(eq, eq_int, name = "PythonType", module = "datafusion.common")]
639+
#[pyclass(frozen, eq, eq_int, name = "PythonType", module = "datafusion.common")]
639640
pub enum PythonType {
640641
Array,
641642
Bool,
@@ -655,7 +656,7 @@ pub enum PythonType {
655656
#[allow(non_camel_case_types)]
656657
#[allow(clippy::upper_case_acronyms)]
657658
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
658-
#[pyclass(eq, eq_int, name = "SqlType", module = "datafusion.common")]
659+
#[pyclass(frozen, eq, eq_int, name = "SqlType", module = "datafusion.common")]
659660
pub enum SqlType {
660661
ANY,
661662
ARRAY,
@@ -713,7 +714,13 @@ pub enum SqlType {
713714
#[allow(non_camel_case_types)]
714715
#[allow(clippy::upper_case_acronyms)]
715716
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
716-
#[pyclass(eq, eq_int, name = "NullTreatment", module = "datafusion.common")]
717+
#[pyclass(
718+
frozen,
719+
eq,
720+
eq_int,
721+
name = "NullTreatment",
722+
module = "datafusion.common"
723+
)]
717724
pub enum NullTreatment {
718725
IGNORE_NULLS,
719726
RESPECT_NULLS,

src/common/df_schema.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use datafusion::common::DFSchema;
2121
use pyo3::prelude::*;
2222

2323
#[derive(Debug, Clone)]
24-
#[pyclass(name = "DFSchema", module = "datafusion.common", subclass)]
24+
#[pyclass(frozen, name = "DFSchema", module = "datafusion.common", subclass)]
2525
pub struct PyDFSchema {
2626
schema: Arc<DFSchema>,
2727
}

src/common/function.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use pyo3::prelude::*;
2222

2323
use super::data_type::PyDataType;
2424

25-
#[pyclass(name = "SqlFunction", module = "datafusion.common", subclass)]
25+
#[pyclass(frozen, name = "SqlFunction", module = "datafusion.common", subclass)]
2626
#[derive(Debug, Clone)]
2727
pub struct SqlFunction {
2828
pub name: String,

src/common/schema.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ fn is_supported_push_down_expr(_expr: &Expr) -> bool {
248248
true
249249
}
250250

251-
#[pyclass(name = "SqlStatistics", module = "datafusion.common", subclass)]
251+
#[pyclass(frozen, name = "SqlStatistics", module = "datafusion.common", subclass)]
252252
#[derive(Debug, Clone)]
253253
pub struct SqlStatistics {
254254
row_count: f64,
@@ -267,7 +267,7 @@ impl SqlStatistics {
267267
}
268268
}
269269

270-
#[pyclass(name = "Constraints", module = "datafusion.expr", subclass)]
270+
#[pyclass(frozen, name = "Constraints", module = "datafusion.expr", subclass)]
271271
#[derive(Clone)]
272272
pub struct PyConstraints {
273273
pub constraints: Constraints,
@@ -292,7 +292,7 @@ impl Display for PyConstraints {
292292
}
293293

294294
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
295-
#[pyclass(eq, eq_int, name = "TableType", module = "datafusion.common")]
295+
#[pyclass(frozen, eq, eq_int, name = "TableType", module = "datafusion.common")]
296296
pub enum PyTableType {
297297
Base,
298298
View,
@@ -319,7 +319,7 @@ impl From<TableType> for PyTableType {
319319
}
320320
}
321321

322-
#[pyclass(name = "TableSource", module = "datafusion.common", subclass)]
322+
#[pyclass(frozen, name = "TableSource", module = "datafusion.common", subclass)]
323323
#[derive(Clone)]
324324
pub struct PyTableSource {
325325
pub table_source: Arc<dyn TableSource>,

0 commit comments

Comments
 (0)