zhuqi-lucas commented on code in PR #14572:
URL: https://github.com/apache/datafusion/pull/14572#discussion_r1954710305


##########
datafusion/common/src/dfschema.rs:
##########
@@ -1028,21 +1028,41 @@ impl SchemaExt for Schema {
             })
     }
 
-    fn logically_equivalent_names_and_types(&self, other: &Self) -> bool {
+    fn logically_equivalent_names_and_types(&self, other: &Self) -> Result<()> 
{
         if self.fields().len() != other.fields().len() {
-            return false;
+            _plan_err!(
+                "Inserting query must have the same schema length as the 
table. \
+            Expected table schema length: {}, got: {}",
+                self.fields().len(),
+                other.fields().len()
+            )
+        } else {
+            self.fields()
+                .iter()
+                .zip(other.fields().iter())
+                .try_for_each(|(f1, f2)| {
+                    // only check the case when the table field is not 
nullable and the insert data field is nullable
+                    if !f1.is_nullable() && f2.is_nullable() {

Review Comment:
   ```rust
   DataFusion CLI v45.0.0
   > create table t1(a int not null) as values(1);
   0 row(s) fetched.
   Elapsed 0.012 seconds.
   
   > create table t2(a int) as values(null);
   0 row(s) fetched.
   Elapsed 0.003 seconds.
   
   > select * from t1 union all select * from t2;
   +------+
   | a    |
   +------+
   | NULL |
   | 1    |
   +------+
   2 row(s) fetched.
   Elapsed 0.004 seconds.
   ```
   
   
   Thanks @jonahgao , got it now, we may need to make the output schema unified 
if we have nullable field for any input.
   
   For example, above case,  we need to make sure the schema is nullable for 
output.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to