This is an automated email from the ASF dual-hosted git repository.

gurwls223 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 09cb5921b7d8 [SPARK-48639][CONNECT][PYTHON] Add Origin to 
Relation.RelationCommon
09cb5921b7d8 is described below

commit 09cb5921b7d88e63e172aa6aea370319e8bbd2fa
Author: Hyukjin Kwon <[email protected]>
AuthorDate: Mon Jun 24 19:25:56 2024 +0900

    [SPARK-48639][CONNECT][PYTHON] Add Origin to Relation.RelationCommon
    
    ### What changes were proposed in this pull request?
    
    This PR proposes to add `Origin` (from 
https://github.com/apache/spark/pull/46789) to `Relation.RelationCommon`
    
    ### Why are the changes needed?
    
    To have the common protobuf message to keep the source code info.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No. This is not used.
    
    ### How was this patch tested?
    
    CI should validate protobuf definition, and exiting tests should pass.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    No.
    
    Closes #47024 from HyukjinKwon/SPARK-48639.
    
    Lead-authored-by: Hyukjin Kwon <[email protected]>
    Co-authored-by: Hyukjin Kwon <[email protected]>
    Signed-off-by: Hyukjin Kwon <[email protected]>
---
 .../main/protobuf/spark/connect/relations.proto    |  10 +-
 python/pyspark/sql/connect/proto/relations_pb2.py  | 305 +++++++++++----------
 python/pyspark/sql/connect/proto/relations_pb2.pyi |  26 +-
 3 files changed, 180 insertions(+), 161 deletions(-)

diff --git 
a/connector/connect/common/src/main/protobuf/spark/connect/relations.proto 
b/connector/connect/common/src/main/protobuf/spark/connect/relations.proto
index ba1a633b0e61..884c32e229cf 100644
--- a/connector/connect/common/src/main/protobuf/spark/connect/relations.proto
+++ b/connector/connect/common/src/main/protobuf/spark/connect/relations.proto
@@ -23,6 +23,7 @@ import "google/protobuf/any.proto";
 import "spark/connect/expressions.proto";
 import "spark/connect/types.proto";
 import "spark/connect/catalog.proto";
+import "spark/connect/common.proto";
 
 option java_multiple_files = true;
 option java_package = "org.apache.spark.connect.proto";
@@ -106,13 +107,14 @@ message Unknown {}
 
 // Common metadata of all relations.
 message RelationCommon {
-  // TODO(SPARK-48639): Add origin like Expression.ExpressionCommon
-
-  // (Required) Shared relation metadata.
-  string source_info = 1;
+  // (Optional) Shared relation metadata.
+  reserved 1;
 
   // (Optional) A per-client globally unique id for a given connect plan.
   optional int64 plan_id = 2;
+
+  // (Optional) Keep the information of the origin for this expression such as 
stacktrace.
+  Origin origin = 3;
 }
 
 // Relation that uses a SQL query to generate the output.
diff --git a/python/pyspark/sql/connect/proto/relations_pb2.py 
b/python/pyspark/sql/connect/proto/relations_pb2.py
index 5bf3901ee545..9f4d1e717a28 100644
--- a/python/pyspark/sql/connect/proto/relations_pb2.py
+++ b/python/pyspark/sql/connect/proto/relations_pb2.py
@@ -32,10 +32,11 @@ from google.protobuf import any_pb2 as 
google_dot_protobuf_dot_any__pb2
 from pyspark.sql.connect.proto import expressions_pb2 as 
spark_dot_connect_dot_expressions__pb2
 from pyspark.sql.connect.proto import types_pb2 as 
spark_dot_connect_dot_types__pb2
 from pyspark.sql.connect.proto import catalog_pb2 as 
spark_dot_connect_dot_catalog__pb2
+from pyspark.sql.connect.proto import common_pb2 as 
spark_dot_connect_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
-    
b'\n\x1dspark/connect/relations.proto\x12\rspark.connect\x1a\x19google/protobuf/any.proto\x1a\x1fspark/connect/expressions.proto\x1a\x19spark/connect/types.proto\x1a\x1bspark/connect/catalog.proto"\xe9\x1a\n\x08Relation\x12\x35\n\x06\x63ommon\x18\x01
 
\x01(\x0b\x32\x1d.spark.connect.RelationCommonR\x06\x63ommon\x12)\n\x04read\x18\x02
 
\x01(\x0b\x32\x13.spark.connect.ReadH\x00R\x04read\x12\x32\n\x07project\x18\x03 
\x01(\x0b\x32\x16.spark.connect.ProjectH\x00R\x07project\x12/\n\x06\x66il [...]
+    
b'\n\x1dspark/connect/relations.proto\x12\rspark.connect\x1a\x19google/protobuf/any.proto\x1a\x1fspark/connect/expressions.proto\x1a\x19spark/connect/types.proto\x1a\x1bspark/connect/catalog.proto\x1a\x1aspark/connect/common.proto"\xe9\x1a\n\x08Relation\x12\x35\n\x06\x63ommon\x18\x01
 
\x01(\x0b\x32\x1d.spark.connect.RelationCommonR\x06\x63ommon\x12)\n\x04read\x18\x02
 
\x01(\x0b\x32\x13.spark.connect.ReadH\x00R\x04read\x12\x32\n\x07project\x18\x03 
\x01(\x0b\x32\x16.spark.connect.Project [...]
 )
 
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
@@ -47,6 +48,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
     DESCRIPTOR._serialized_options = (
         b"\n\036org.apache.spark.connect.protoP\001Z\022internal/generated"
     )
+    _RELATIONCOMMON.fields_by_name["source_info"]._options = None
+    _RELATIONCOMMON.fields_by_name["source_info"]._serialized_options = 
b"\030\001"
     _SQL_ARGSENTRY._options = None
     _SQL_ARGSENTRY._serialized_options = b"8\001"
     _SQL_NAMEDARGUMENTSENTRY._options = None
@@ -65,154 +68,154 @@ if _descriptor._USE_C_DESCRIPTORS == False:
     
_WITHCOLUMNSRENAMED.fields_by_name["rename_columns_map"]._serialized_options = 
b"\030\001"
     _PARSE_OPTIONSENTRY._options = None
     _PARSE_OPTIONSENTRY._serialized_options = b"8\001"
-    _RELATION._serialized_start = 165
-    _RELATION._serialized_end = 3598
-    _UNKNOWN._serialized_start = 3600
-    _UNKNOWN._serialized_end = 3609
-    _RELATIONCOMMON._serialized_start = 3611
-    _RELATIONCOMMON._serialized_end = 3702
-    _SQL._serialized_start = 3705
-    _SQL._serialized_end = 4183
-    _SQL_ARGSENTRY._serialized_start = 3999
-    _SQL_ARGSENTRY._serialized_end = 4089
-    _SQL_NAMEDARGUMENTSENTRY._serialized_start = 4091
-    _SQL_NAMEDARGUMENTSENTRY._serialized_end = 4183
-    _WITHRELATIONS._serialized_start = 4185
-    _WITHRELATIONS._serialized_end = 4302
-    _READ._serialized_start = 4305
-    _READ._serialized_end = 4968
-    _READ_NAMEDTABLE._serialized_start = 4483
-    _READ_NAMEDTABLE._serialized_end = 4675
-    _READ_NAMEDTABLE_OPTIONSENTRY._serialized_start = 4617
-    _READ_NAMEDTABLE_OPTIONSENTRY._serialized_end = 4675
-    _READ_DATASOURCE._serialized_start = 4678
-    _READ_DATASOURCE._serialized_end = 4955
-    _READ_DATASOURCE_OPTIONSENTRY._serialized_start = 4617
-    _READ_DATASOURCE_OPTIONSENTRY._serialized_end = 4675
-    _PROJECT._serialized_start = 4970
-    _PROJECT._serialized_end = 5087
-    _FILTER._serialized_start = 5089
-    _FILTER._serialized_end = 5201
-    _JOIN._serialized_start = 5204
-    _JOIN._serialized_end = 5865
-    _JOIN_JOINDATATYPE._serialized_start = 5543
-    _JOIN_JOINDATATYPE._serialized_end = 5635
-    _JOIN_JOINTYPE._serialized_start = 5638
-    _JOIN_JOINTYPE._serialized_end = 5846
-    _SETOPERATION._serialized_start = 5868
-    _SETOPERATION._serialized_end = 6347
-    _SETOPERATION_SETOPTYPE._serialized_start = 6184
-    _SETOPERATION_SETOPTYPE._serialized_end = 6298
-    _LIMIT._serialized_start = 6349
-    _LIMIT._serialized_end = 6425
-    _OFFSET._serialized_start = 6427
-    _OFFSET._serialized_end = 6506
-    _TAIL._serialized_start = 6508
-    _TAIL._serialized_end = 6583
-    _AGGREGATE._serialized_start = 6586
-    _AGGREGATE._serialized_end = 7352
-    _AGGREGATE_PIVOT._serialized_start = 7001
-    _AGGREGATE_PIVOT._serialized_end = 7112
-    _AGGREGATE_GROUPINGSETS._serialized_start = 7114
-    _AGGREGATE_GROUPINGSETS._serialized_end = 7190
-    _AGGREGATE_GROUPTYPE._serialized_start = 7193
-    _AGGREGATE_GROUPTYPE._serialized_end = 7352
-    _SORT._serialized_start = 7355
-    _SORT._serialized_end = 7515
-    _DROP._serialized_start = 7518
-    _DROP._serialized_end = 7659
-    _DEDUPLICATE._serialized_start = 7662
-    _DEDUPLICATE._serialized_end = 7902
-    _LOCALRELATION._serialized_start = 7904
-    _LOCALRELATION._serialized_end = 7993
-    _CACHEDLOCALRELATION._serialized_start = 7995
-    _CACHEDLOCALRELATION._serialized_end = 8067
-    _CACHEDREMOTERELATION._serialized_start = 8069
-    _CACHEDREMOTERELATION._serialized_end = 8124
-    _SAMPLE._serialized_start = 8127
-    _SAMPLE._serialized_end = 8400
-    _RANGE._serialized_start = 8403
-    _RANGE._serialized_end = 8548
-    _SUBQUERYALIAS._serialized_start = 8550
-    _SUBQUERYALIAS._serialized_end = 8664
-    _REPARTITION._serialized_start = 8667
-    _REPARTITION._serialized_end = 8809
-    _SHOWSTRING._serialized_start = 8812
-    _SHOWSTRING._serialized_end = 8954
-    _HTMLSTRING._serialized_start = 8956
-    _HTMLSTRING._serialized_end = 9070
-    _STATSUMMARY._serialized_start = 9072
-    _STATSUMMARY._serialized_end = 9164
-    _STATDESCRIBE._serialized_start = 9166
-    _STATDESCRIBE._serialized_end = 9247
-    _STATCROSSTAB._serialized_start = 9249
-    _STATCROSSTAB._serialized_end = 9350
-    _STATCOV._serialized_start = 9352
-    _STATCOV._serialized_end = 9448
-    _STATCORR._serialized_start = 9451
-    _STATCORR._serialized_end = 9588
-    _STATAPPROXQUANTILE._serialized_start = 9591
-    _STATAPPROXQUANTILE._serialized_end = 9755
-    _STATFREQITEMS._serialized_start = 9757
-    _STATFREQITEMS._serialized_end = 9882
-    _STATSAMPLEBY._serialized_start = 9885
-    _STATSAMPLEBY._serialized_end = 10194
-    _STATSAMPLEBY_FRACTION._serialized_start = 10086
-    _STATSAMPLEBY_FRACTION._serialized_end = 10185
-    _NAFILL._serialized_start = 10197
-    _NAFILL._serialized_end = 10331
-    _NADROP._serialized_start = 10334
-    _NADROP._serialized_end = 10468
-    _NAREPLACE._serialized_start = 10471
-    _NAREPLACE._serialized_end = 10767
-    _NAREPLACE_REPLACEMENT._serialized_start = 10626
-    _NAREPLACE_REPLACEMENT._serialized_end = 10767
-    _TODF._serialized_start = 10769
-    _TODF._serialized_end = 10857
-    _WITHCOLUMNSRENAMED._serialized_start = 10860
-    _WITHCOLUMNSRENAMED._serialized_end = 11242
-    _WITHCOLUMNSRENAMED_RENAMECOLUMNSMAPENTRY._serialized_start = 11104
-    _WITHCOLUMNSRENAMED_RENAMECOLUMNSMAPENTRY._serialized_end = 11171
-    _WITHCOLUMNSRENAMED_RENAME._serialized_start = 11173
-    _WITHCOLUMNSRENAMED_RENAME._serialized_end = 11242
-    _WITHCOLUMNS._serialized_start = 11244
-    _WITHCOLUMNS._serialized_end = 11363
-    _WITHWATERMARK._serialized_start = 11366
-    _WITHWATERMARK._serialized_end = 11500
-    _HINT._serialized_start = 11503
-    _HINT._serialized_end = 11635
-    _UNPIVOT._serialized_start = 11638
-    _UNPIVOT._serialized_end = 11965
-    _UNPIVOT_VALUES._serialized_start = 11895
-    _UNPIVOT_VALUES._serialized_end = 11954
-    _TOSCHEMA._serialized_start = 11967
-    _TOSCHEMA._serialized_end = 12073
-    _REPARTITIONBYEXPRESSION._serialized_start = 12076
-    _REPARTITIONBYEXPRESSION._serialized_end = 12279
-    _MAPPARTITIONS._serialized_start = 12282
-    _MAPPARTITIONS._serialized_end = 12514
-    _GROUPMAP._serialized_start = 12517
-    _GROUPMAP._serialized_end = 13152
-    _COGROUPMAP._serialized_start = 13155
-    _COGROUPMAP._serialized_end = 13681
-    _APPLYINPANDASWITHSTATE._serialized_start = 13684
-    _APPLYINPANDASWITHSTATE._serialized_end = 14041
-    _COMMONINLINEUSERDEFINEDTABLEFUNCTION._serialized_start = 14044
-    _COMMONINLINEUSERDEFINEDTABLEFUNCTION._serialized_end = 14288
-    _PYTHONUDTF._serialized_start = 14291
-    _PYTHONUDTF._serialized_end = 14468
-    _COMMONINLINEUSERDEFINEDDATASOURCE._serialized_start = 14471
-    _COMMONINLINEUSERDEFINEDDATASOURCE._serialized_end = 14622
-    _PYTHONDATASOURCE._serialized_start = 14624
-    _PYTHONDATASOURCE._serialized_end = 14699
-    _COLLECTMETRICS._serialized_start = 14702
-    _COLLECTMETRICS._serialized_end = 14838
-    _PARSE._serialized_start = 14841
-    _PARSE._serialized_end = 15229
-    _PARSE_OPTIONSENTRY._serialized_start = 4617
-    _PARSE_OPTIONSENTRY._serialized_end = 4675
-    _PARSE_PARSEFORMAT._serialized_start = 15130
-    _PARSE_PARSEFORMAT._serialized_end = 15218
-    _ASOFJOIN._serialized_start = 15232
-    _ASOFJOIN._serialized_end = 15707
+    _RELATION._serialized_start = 193
+    _RELATION._serialized_end = 3626
+    _UNKNOWN._serialized_start = 3628
+    _UNKNOWN._serialized_end = 3637
+    _RELATIONCOMMON._serialized_start = 3640
+    _RELATIONCOMMON._serialized_end = 3782
+    _SQL._serialized_start = 3785
+    _SQL._serialized_end = 4263
+    _SQL_ARGSENTRY._serialized_start = 4079
+    _SQL_ARGSENTRY._serialized_end = 4169
+    _SQL_NAMEDARGUMENTSENTRY._serialized_start = 4171
+    _SQL_NAMEDARGUMENTSENTRY._serialized_end = 4263
+    _WITHRELATIONS._serialized_start = 4265
+    _WITHRELATIONS._serialized_end = 4382
+    _READ._serialized_start = 4385
+    _READ._serialized_end = 5048
+    _READ_NAMEDTABLE._serialized_start = 4563
+    _READ_NAMEDTABLE._serialized_end = 4755
+    _READ_NAMEDTABLE_OPTIONSENTRY._serialized_start = 4697
+    _READ_NAMEDTABLE_OPTIONSENTRY._serialized_end = 4755
+    _READ_DATASOURCE._serialized_start = 4758
+    _READ_DATASOURCE._serialized_end = 5035
+    _READ_DATASOURCE_OPTIONSENTRY._serialized_start = 4697
+    _READ_DATASOURCE_OPTIONSENTRY._serialized_end = 4755
+    _PROJECT._serialized_start = 5050
+    _PROJECT._serialized_end = 5167
+    _FILTER._serialized_start = 5169
+    _FILTER._serialized_end = 5281
+    _JOIN._serialized_start = 5284
+    _JOIN._serialized_end = 5945
+    _JOIN_JOINDATATYPE._serialized_start = 5623
+    _JOIN_JOINDATATYPE._serialized_end = 5715
+    _JOIN_JOINTYPE._serialized_start = 5718
+    _JOIN_JOINTYPE._serialized_end = 5926
+    _SETOPERATION._serialized_start = 5948
+    _SETOPERATION._serialized_end = 6427
+    _SETOPERATION_SETOPTYPE._serialized_start = 6264
+    _SETOPERATION_SETOPTYPE._serialized_end = 6378
+    _LIMIT._serialized_start = 6429
+    _LIMIT._serialized_end = 6505
+    _OFFSET._serialized_start = 6507
+    _OFFSET._serialized_end = 6586
+    _TAIL._serialized_start = 6588
+    _TAIL._serialized_end = 6663
+    _AGGREGATE._serialized_start = 6666
+    _AGGREGATE._serialized_end = 7432
+    _AGGREGATE_PIVOT._serialized_start = 7081
+    _AGGREGATE_PIVOT._serialized_end = 7192
+    _AGGREGATE_GROUPINGSETS._serialized_start = 7194
+    _AGGREGATE_GROUPINGSETS._serialized_end = 7270
+    _AGGREGATE_GROUPTYPE._serialized_start = 7273
+    _AGGREGATE_GROUPTYPE._serialized_end = 7432
+    _SORT._serialized_start = 7435
+    _SORT._serialized_end = 7595
+    _DROP._serialized_start = 7598
+    _DROP._serialized_end = 7739
+    _DEDUPLICATE._serialized_start = 7742
+    _DEDUPLICATE._serialized_end = 7982
+    _LOCALRELATION._serialized_start = 7984
+    _LOCALRELATION._serialized_end = 8073
+    _CACHEDLOCALRELATION._serialized_start = 8075
+    _CACHEDLOCALRELATION._serialized_end = 8147
+    _CACHEDREMOTERELATION._serialized_start = 8149
+    _CACHEDREMOTERELATION._serialized_end = 8204
+    _SAMPLE._serialized_start = 8207
+    _SAMPLE._serialized_end = 8480
+    _RANGE._serialized_start = 8483
+    _RANGE._serialized_end = 8628
+    _SUBQUERYALIAS._serialized_start = 8630
+    _SUBQUERYALIAS._serialized_end = 8744
+    _REPARTITION._serialized_start = 8747
+    _REPARTITION._serialized_end = 8889
+    _SHOWSTRING._serialized_start = 8892
+    _SHOWSTRING._serialized_end = 9034
+    _HTMLSTRING._serialized_start = 9036
+    _HTMLSTRING._serialized_end = 9150
+    _STATSUMMARY._serialized_start = 9152
+    _STATSUMMARY._serialized_end = 9244
+    _STATDESCRIBE._serialized_start = 9246
+    _STATDESCRIBE._serialized_end = 9327
+    _STATCROSSTAB._serialized_start = 9329
+    _STATCROSSTAB._serialized_end = 9430
+    _STATCOV._serialized_start = 9432
+    _STATCOV._serialized_end = 9528
+    _STATCORR._serialized_start = 9531
+    _STATCORR._serialized_end = 9668
+    _STATAPPROXQUANTILE._serialized_start = 9671
+    _STATAPPROXQUANTILE._serialized_end = 9835
+    _STATFREQITEMS._serialized_start = 9837
+    _STATFREQITEMS._serialized_end = 9962
+    _STATSAMPLEBY._serialized_start = 9965
+    _STATSAMPLEBY._serialized_end = 10274
+    _STATSAMPLEBY_FRACTION._serialized_start = 10166
+    _STATSAMPLEBY_FRACTION._serialized_end = 10265
+    _NAFILL._serialized_start = 10277
+    _NAFILL._serialized_end = 10411
+    _NADROP._serialized_start = 10414
+    _NADROP._serialized_end = 10548
+    _NAREPLACE._serialized_start = 10551
+    _NAREPLACE._serialized_end = 10847
+    _NAREPLACE_REPLACEMENT._serialized_start = 10706
+    _NAREPLACE_REPLACEMENT._serialized_end = 10847
+    _TODF._serialized_start = 10849
+    _TODF._serialized_end = 10937
+    _WITHCOLUMNSRENAMED._serialized_start = 10940
+    _WITHCOLUMNSRENAMED._serialized_end = 11322
+    _WITHCOLUMNSRENAMED_RENAMECOLUMNSMAPENTRY._serialized_start = 11184
+    _WITHCOLUMNSRENAMED_RENAMECOLUMNSMAPENTRY._serialized_end = 11251
+    _WITHCOLUMNSRENAMED_RENAME._serialized_start = 11253
+    _WITHCOLUMNSRENAMED_RENAME._serialized_end = 11322
+    _WITHCOLUMNS._serialized_start = 11324
+    _WITHCOLUMNS._serialized_end = 11443
+    _WITHWATERMARK._serialized_start = 11446
+    _WITHWATERMARK._serialized_end = 11580
+    _HINT._serialized_start = 11583
+    _HINT._serialized_end = 11715
+    _UNPIVOT._serialized_start = 11718
+    _UNPIVOT._serialized_end = 12045
+    _UNPIVOT_VALUES._serialized_start = 11975
+    _UNPIVOT_VALUES._serialized_end = 12034
+    _TOSCHEMA._serialized_start = 12047
+    _TOSCHEMA._serialized_end = 12153
+    _REPARTITIONBYEXPRESSION._serialized_start = 12156
+    _REPARTITIONBYEXPRESSION._serialized_end = 12359
+    _MAPPARTITIONS._serialized_start = 12362
+    _MAPPARTITIONS._serialized_end = 12594
+    _GROUPMAP._serialized_start = 12597
+    _GROUPMAP._serialized_end = 13232
+    _COGROUPMAP._serialized_start = 13235
+    _COGROUPMAP._serialized_end = 13761
+    _APPLYINPANDASWITHSTATE._serialized_start = 13764
+    _APPLYINPANDASWITHSTATE._serialized_end = 14121
+    _COMMONINLINEUSERDEFINEDTABLEFUNCTION._serialized_start = 14124
+    _COMMONINLINEUSERDEFINEDTABLEFUNCTION._serialized_end = 14368
+    _PYTHONUDTF._serialized_start = 14371
+    _PYTHONUDTF._serialized_end = 14548
+    _COMMONINLINEUSERDEFINEDDATASOURCE._serialized_start = 14551
+    _COMMONINLINEUSERDEFINEDDATASOURCE._serialized_end = 14702
+    _PYTHONDATASOURCE._serialized_start = 14704
+    _PYTHONDATASOURCE._serialized_end = 14779
+    _COLLECTMETRICS._serialized_start = 14782
+    _COLLECTMETRICS._serialized_end = 14918
+    _PARSE._serialized_start = 14921
+    _PARSE._serialized_end = 15309
+    _PARSE_OPTIONSENTRY._serialized_start = 4697
+    _PARSE_OPTIONSENTRY._serialized_end = 4755
+    _PARSE_PARSEFORMAT._serialized_start = 15210
+    _PARSE_PARSEFORMAT._serialized_end = 15298
+    _ASOFJOIN._serialized_start = 15312
+    _ASOFJOIN._serialized_end = 15787
 # @@protoc_insertion_point(module_scope)
diff --git a/python/pyspark/sql/connect/proto/relations_pb2.pyi 
b/python/pyspark/sql/connect/proto/relations_pb2.pyi
index ecf07a4ea9d7..a4583bda7e22 100644
--- a/python/pyspark/sql/connect/proto/relations_pb2.pyi
+++ b/python/pyspark/sql/connect/proto/relations_pb2.pyi
@@ -41,6 +41,7 @@ import google.protobuf.internal.containers
 import google.protobuf.internal.enum_type_wrapper
 import google.protobuf.message
 import pyspark.sql.connect.proto.catalog_pb2
+import pyspark.sql.connect.proto.common_pb2
 import pyspark.sql.connect.proto.expressions_pb2
 import pyspark.sql.connect.proto.types_pb2
 import sys
@@ -608,31 +609,44 @@ class Unknown(google.protobuf.message.Message):
 global___Unknown = Unknown
 
 class RelationCommon(google.protobuf.message.Message):
-    """Common metadata of all relations.
-    TODO(SPARK-48639): Add origin like Expression.ExpressionCommon
-    """
+    """Common metadata of all relations."""
 
     DESCRIPTOR: google.protobuf.descriptor.Descriptor
 
     SOURCE_INFO_FIELD_NUMBER: builtins.int
     PLAN_ID_FIELD_NUMBER: builtins.int
+    ORIGIN_FIELD_NUMBER: builtins.int
     source_info: builtins.str
-    """(Required) Shared relation metadata."""
+    """(Optional) Shared relation metadata."""
     plan_id: builtins.int
     """(Optional) A per-client globally unique id for a given connect plan."""
+    @property
+    def origin(self) -> pyspark.sql.connect.proto.common_pb2.Origin:
+        """(Optional) Keep the information of the origin for this expression 
such as stacktrace."""
     def __init__(
         self,
         *,
         source_info: builtins.str = ...,
         plan_id: builtins.int | None = ...,
+        origin: pyspark.sql.connect.proto.common_pb2.Origin | None = ...,
     ) -> None: ...
     def HasField(
-        self, field_name: typing_extensions.Literal["_plan_id", b"_plan_id", 
"plan_id", b"plan_id"]
+        self,
+        field_name: typing_extensions.Literal[
+            "_plan_id", b"_plan_id", "origin", b"origin", "plan_id", b"plan_id"
+        ],
     ) -> builtins.bool: ...
     def ClearField(
         self,
         field_name: typing_extensions.Literal[
-            "_plan_id", b"_plan_id", "plan_id", b"plan_id", "source_info", 
b"source_info"
+            "_plan_id",
+            b"_plan_id",
+            "origin",
+            b"origin",
+            "plan_id",
+            b"plan_id",
+            "source_info",
+            b"source_info",
         ],
     ) -> None: ...
     def WhichOneof(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to