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

HyukjinKwon 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 f86867449ec4 [SPARK-58593][CONNECT] Add extension Any field to 
AnalyzePlanResponse
f86867449ec4 is described below

commit f86867449ec4a20b572fc183c65afafb075f1c3d
Author: mehdigharam-db <[email protected]>
AuthorDate: Tue Aug 11 19:13:45 2026 +0900

    [SPARK-58593][CONNECT] Add extension Any field to AnalyzePlanResponse
    
    ### What changes were proposed in this pull request?
    
    Adds a `repeated google.protobuf.Any extensions = 999` field to 
`AnalyzePlanResponse` in
    `base.proto`, and regenerates the PySpark stubs accordingly.
    
    The field is placed **outside** the `result` oneof, unlike 
`ExecutePlanResponse` where the
    extension is a oneof arm. This is intentional: `AnalyzePlan` is a unary RPC 
that returns a
    single response, so a single message must be able to carry both the regular 
result (e.g.
    the `schema` arm) **and** an accompanying extension. Putting it inside the 
oneof would make
    the two mutually exclusive.
    
    ### Why are the changes needed?
    
    To let a Connect provider attach provider-specific metadata to an analyze 
response, the way
    other messages in the protocol already allow.
    
    `AnalyzePlanResponse` is currently the only major Spark Connect response 
type without an
    extension point. `ExecutePlanResponse` has one, as do `UserContext`,
    `AnalyzePlanRequest.RequestOption`, `GetStatusRequest` and 
`GetStatusResponse`. So a
    provider that wants to return extra information alongside an analyze result 
-- schema
    metadata, for instance -- has nowhere to put it today, and has to route the 
information through a separate call.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No. This adds a new optional proto field that nothing reads or writes yet.
    
    ### How was this patch tested?
    
    No new tests. This is a proto field addition with no server- or client-side 
behavior to
    exercise.
    
    Verified locally with the same checks the `buf` CI job runs:
    
    - `dev/check-protos.py` -- both `pyspark-connect` and `pyspark-streaming` 
report SUCCESS,
      confirming the committed stubs match the `.proto`.
    - `buf breaking --against 
'...#branch=branch-4.0,subdir=sql/connect/common/src/main'` --
      clean, as expected for adding a new field number.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Yes.
    Co-authored using Claude Opus 5
    
    Closes #57797 from 
mehdigharam-db/SPARK-58593-analyze-plan-response-extension.
    
    Authored-by: mehdigharam-db <[email protected]>
    Signed-off-by: Hyukjin Kwon <[email protected]>
---
 python/pyspark/sql/connect/proto/base_pb2.py       | 320 ++++++++++-----------
 python/pyspark/sql/connect/proto/base_pb2.pyi      |  11 +
 .../src/main/protobuf/spark/connect/base.proto     |   3 +
 3 files changed, 174 insertions(+), 160 deletions(-)

diff --git a/python/pyspark/sql/connect/proto/base_pb2.py 
b/python/pyspark/sql/connect/proto/base_pb2.py
index a77c61ca6d2b..ee3ddb48ba5c 100644
--- a/python/pyspark/sql/connect/proto/base_pb2.py
+++ b/python/pyspark/sql/connect/proto/base_pb2.py
@@ -46,7 +46,7 @@ from pyspark.sql.connect.proto import pipelines_pb2 as 
spark_dot_connect_dot_pip
 
 
 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
-    
b'\n\x18spark/connect/base.proto\x12\rspark.connect\x1a\x19google/protobuf/any.proto\x1a\x1cspark/connect/commands.proto\x1a\x1aspark/connect/common.proto\x1a\x1fspark/connect/expressions.proto\x1a\x1dspark/connect/relations.proto\x1a\x19spark/connect/types.proto\x1a\x16spark/connect/ml.proto\x1a\x1dspark/connect/pipelines.proto"\xe3\x03\n\x04Plan\x12-\n\x04root\x18\x01
 
\x01(\x0b\x32\x17.spark.connect.RelationH\x00R\x04root\x12\x32\n\x07\x63ommand\x18\x02
 \x01(\x0b\x32\x16.spark.conn [...]
+    
b'\n\x18spark/connect/base.proto\x12\rspark.connect\x1a\x19google/protobuf/any.proto\x1a\x1cspark/connect/commands.proto\x1a\x1aspark/connect/common.proto\x1a\x1fspark/connect/expressions.proto\x1a\x1dspark/connect/relations.proto\x1a\x19spark/connect/types.proto\x1a\x16spark/connect/ml.proto\x1a\x1dspark/connect/pipelines.proto"\xe3\x03\n\x04Plan\x12-\n\x04root\x18\x01
 
\x01(\x0b\x32\x17.spark.connect.RelationH\x00R\x04root\x12\x32\n\x07\x63ommand\x18\x02
 \x01(\x0b\x32\x16.spark.conn [...]
 )
 
 _globals = globals()
@@ -71,8 +71,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
     _globals[
         "_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE_MESSAGEPARAMETERSENTRY"
     ]._serialized_options = b"8\001"
-    _globals["_COMPRESSIONCODEC"]._serialized_start = 19991
-    _globals["_COMPRESSIONCODEC"]._serialized_end = 20072
+    _globals["_COMPRESSIONCODEC"]._serialized_start = 20046
+    _globals["_COMPRESSIONCODEC"]._serialized_end = 20127
     _globals["_PLAN"]._serialized_start = 275
     _globals["_PLAN"]._serialized_end = 758
     _globals["_PLAN_COMPRESSEDOPERATION"]._serialized_start = 477
@@ -114,173 +114,173 @@ if not _descriptor._USE_C_DESCRIPTORS:
     _globals["_ANALYZEPLANREQUEST_JSONTODDL"]._serialized_start = 3448
     _globals["_ANALYZEPLANREQUEST_JSONTODDL"]._serialized_end = 3492
     _globals["_ANALYZEPLANRESPONSE"]._serialized_start = 3565
-    _globals["_ANALYZEPLANRESPONSE"]._serialized_end = 5431
-    _globals["_ANALYZEPLANRESPONSE_SCHEMA"]._serialized_start = 4806
-    _globals["_ANALYZEPLANRESPONSE_SCHEMA"]._serialized_end = 4863
-    _globals["_ANALYZEPLANRESPONSE_EXPLAIN"]._serialized_start = 4865
-    _globals["_ANALYZEPLANRESPONSE_EXPLAIN"]._serialized_end = 4913
-    _globals["_ANALYZEPLANRESPONSE_TREESTRING"]._serialized_start = 4915
-    _globals["_ANALYZEPLANRESPONSE_TREESTRING"]._serialized_end = 4960
-    _globals["_ANALYZEPLANRESPONSE_ISLOCAL"]._serialized_start = 4962
-    _globals["_ANALYZEPLANRESPONSE_ISLOCAL"]._serialized_end = 4998
-    _globals["_ANALYZEPLANRESPONSE_ISSTREAMING"]._serialized_start = 5000
-    _globals["_ANALYZEPLANRESPONSE_ISSTREAMING"]._serialized_end = 5048
-    _globals["_ANALYZEPLANRESPONSE_INPUTFILES"]._serialized_start = 5050
-    _globals["_ANALYZEPLANRESPONSE_INPUTFILES"]._serialized_end = 5084
-    _globals["_ANALYZEPLANRESPONSE_SPARKVERSION"]._serialized_start = 5086
-    _globals["_ANALYZEPLANRESPONSE_SPARKVERSION"]._serialized_end = 5126
-    _globals["_ANALYZEPLANRESPONSE_DDLPARSE"]._serialized_start = 5128
-    _globals["_ANALYZEPLANRESPONSE_DDLPARSE"]._serialized_end = 5187
-    _globals["_ANALYZEPLANRESPONSE_SAMESEMANTICS"]._serialized_start = 5189
-    _globals["_ANALYZEPLANRESPONSE_SAMESEMANTICS"]._serialized_end = 5228
-    _globals["_ANALYZEPLANRESPONSE_SEMANTICHASH"]._serialized_start = 5230
-    _globals["_ANALYZEPLANRESPONSE_SEMANTICHASH"]._serialized_end = 5268
+    _globals["_ANALYZEPLANRESPONSE"]._serialized_end = 5486
+    _globals["_ANALYZEPLANRESPONSE_SCHEMA"]._serialized_start = 4861
+    _globals["_ANALYZEPLANRESPONSE_SCHEMA"]._serialized_end = 4918
+    _globals["_ANALYZEPLANRESPONSE_EXPLAIN"]._serialized_start = 4920
+    _globals["_ANALYZEPLANRESPONSE_EXPLAIN"]._serialized_end = 4968
+    _globals["_ANALYZEPLANRESPONSE_TREESTRING"]._serialized_start = 4970
+    _globals["_ANALYZEPLANRESPONSE_TREESTRING"]._serialized_end = 5015
+    _globals["_ANALYZEPLANRESPONSE_ISLOCAL"]._serialized_start = 5017
+    _globals["_ANALYZEPLANRESPONSE_ISLOCAL"]._serialized_end = 5053
+    _globals["_ANALYZEPLANRESPONSE_ISSTREAMING"]._serialized_start = 5055
+    _globals["_ANALYZEPLANRESPONSE_ISSTREAMING"]._serialized_end = 5103
+    _globals["_ANALYZEPLANRESPONSE_INPUTFILES"]._serialized_start = 5105
+    _globals["_ANALYZEPLANRESPONSE_INPUTFILES"]._serialized_end = 5139
+    _globals["_ANALYZEPLANRESPONSE_SPARKVERSION"]._serialized_start = 5141
+    _globals["_ANALYZEPLANRESPONSE_SPARKVERSION"]._serialized_end = 5181
+    _globals["_ANALYZEPLANRESPONSE_DDLPARSE"]._serialized_start = 5183
+    _globals["_ANALYZEPLANRESPONSE_DDLPARSE"]._serialized_end = 5242
+    _globals["_ANALYZEPLANRESPONSE_SAMESEMANTICS"]._serialized_start = 5244
+    _globals["_ANALYZEPLANRESPONSE_SAMESEMANTICS"]._serialized_end = 5283
+    _globals["_ANALYZEPLANRESPONSE_SEMANTICHASH"]._serialized_start = 5285
+    _globals["_ANALYZEPLANRESPONSE_SEMANTICHASH"]._serialized_end = 5323
     _globals["_ANALYZEPLANRESPONSE_PERSIST"]._serialized_start = 3111
     _globals["_ANALYZEPLANRESPONSE_PERSIST"]._serialized_end = 3120
     _globals["_ANALYZEPLANRESPONSE_UNPERSIST"]._serialized_start = 3264
     _globals["_ANALYZEPLANRESPONSE_UNPERSIST"]._serialized_end = 3275
-    _globals["_ANALYZEPLANRESPONSE_GETSTORAGELEVEL"]._serialized_start = 5294
-    _globals["_ANALYZEPLANRESPONSE_GETSTORAGELEVEL"]._serialized_end = 5377
-    _globals["_ANALYZEPLANRESPONSE_JSONTODDL"]._serialized_start = 5379
-    _globals["_ANALYZEPLANRESPONSE_JSONTODDL"]._serialized_end = 5421
-    _globals["_EXECUTEPLANREQUEST"]._serialized_start = 5434
-    _globals["_EXECUTEPLANREQUEST"]._serialized_end = 6205
-    _globals["_EXECUTEPLANREQUEST_REQUESTOPTION"]._serialized_start = 5868
-    _globals["_EXECUTEPLANREQUEST_REQUESTOPTION"]._serialized_end = 6129
-    _globals["_EXECUTEPLANRESPONSE"]._serialized_start = 6208
-    _globals["_EXECUTEPLANRESPONSE"]._serialized_end = 9799
-    _globals["_EXECUTEPLANRESPONSE_SQLCOMMANDRESULT"]._serialized_start = 8308
-    _globals["_EXECUTEPLANRESPONSE_SQLCOMMANDRESULT"]._serialized_end = 8379
-    _globals["_EXECUTEPLANRESPONSE_ARROWBATCH"]._serialized_start = 8382
-    _globals["_EXECUTEPLANRESPONSE_ARROWBATCH"]._serialized_end = 8630
-    _globals["_EXECUTEPLANRESPONSE_METRICS"]._serialized_start = 8633
-    _globals["_EXECUTEPLANRESPONSE_METRICS"]._serialized_end = 9150
-    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICOBJECT"]._serialized_start = 
8728
-    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICOBJECT"]._serialized_end = 
9060
+    _globals["_ANALYZEPLANRESPONSE_GETSTORAGELEVEL"]._serialized_start = 5349
+    _globals["_ANALYZEPLANRESPONSE_GETSTORAGELEVEL"]._serialized_end = 5432
+    _globals["_ANALYZEPLANRESPONSE_JSONTODDL"]._serialized_start = 5434
+    _globals["_ANALYZEPLANRESPONSE_JSONTODDL"]._serialized_end = 5476
+    _globals["_EXECUTEPLANREQUEST"]._serialized_start = 5489
+    _globals["_EXECUTEPLANREQUEST"]._serialized_end = 6260
+    _globals["_EXECUTEPLANREQUEST_REQUESTOPTION"]._serialized_start = 5923
+    _globals["_EXECUTEPLANREQUEST_REQUESTOPTION"]._serialized_end = 6184
+    _globals["_EXECUTEPLANRESPONSE"]._serialized_start = 6263
+    _globals["_EXECUTEPLANRESPONSE"]._serialized_end = 9854
+    _globals["_EXECUTEPLANRESPONSE_SQLCOMMANDRESULT"]._serialized_start = 8363
+    _globals["_EXECUTEPLANRESPONSE_SQLCOMMANDRESULT"]._serialized_end = 8434
+    _globals["_EXECUTEPLANRESPONSE_ARROWBATCH"]._serialized_start = 8437
+    _globals["_EXECUTEPLANRESPONSE_ARROWBATCH"]._serialized_end = 8685
+    _globals["_EXECUTEPLANRESPONSE_METRICS"]._serialized_start = 8688
+    _globals["_EXECUTEPLANRESPONSE_METRICS"]._serialized_end = 9205
+    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICOBJECT"]._serialized_start = 
8783
+    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICOBJECT"]._serialized_end = 
9115
     _globals[
         "_EXECUTEPLANRESPONSE_METRICS_METRICOBJECT_EXECUTIONMETRICSENTRY"
-    ]._serialized_start = 8937
+    ]._serialized_start = 8992
     _globals[
         "_EXECUTEPLANRESPONSE_METRICS_METRICOBJECT_EXECUTIONMETRICSENTRY"
-    ]._serialized_end = 9060
-    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICVALUE"]._serialized_start = 
9062
-    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICVALUE"]._serialized_end = 9150
-    _globals["_EXECUTEPLANRESPONSE_OBSERVEDMETRICS"]._serialized_start = 9153
-    _globals["_EXECUTEPLANRESPONSE_OBSERVEDMETRICS"]._serialized_end = 9428
-    _globals["_EXECUTEPLANRESPONSE_RESULTCOMPLETE"]._serialized_start = 9430
-    _globals["_EXECUTEPLANRESPONSE_RESULTCOMPLETE"]._serialized_end = 9446
-    _globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS"]._serialized_start = 9449
-    _globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS"]._serialized_end = 9782
-    
_globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS_STAGEINFO"]._serialized_start 
= 9605
-    
_globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS_STAGEINFO"]._serialized_end = 
9782
-    _globals["_KEYVALUE"]._serialized_start = 9801
-    _globals["_KEYVALUE"]._serialized_end = 9866
-    _globals["_CONFIGREQUEST"]._serialized_start = 9869
-    _globals["_CONFIGREQUEST"]._serialized_end = 11068
-    _globals["_CONFIGREQUEST_OPERATION"]._serialized_start = 10177
-    _globals["_CONFIGREQUEST_OPERATION"]._serialized_end = 10675
-    _globals["_CONFIGREQUEST_SET"]._serialized_start = 10677
-    _globals["_CONFIGREQUEST_SET"]._serialized_end = 10769
-    _globals["_CONFIGREQUEST_GET"]._serialized_start = 10771
-    _globals["_CONFIGREQUEST_GET"]._serialized_end = 10796
-    _globals["_CONFIGREQUEST_GETWITHDEFAULT"]._serialized_start = 10798
-    _globals["_CONFIGREQUEST_GETWITHDEFAULT"]._serialized_end = 10861
-    _globals["_CONFIGREQUEST_GETOPTION"]._serialized_start = 10863
-    _globals["_CONFIGREQUEST_GETOPTION"]._serialized_end = 10894
-    _globals["_CONFIGREQUEST_GETALL"]._serialized_start = 10896
-    _globals["_CONFIGREQUEST_GETALL"]._serialized_end = 10944
-    _globals["_CONFIGREQUEST_UNSET"]._serialized_start = 10946
-    _globals["_CONFIGREQUEST_UNSET"]._serialized_end = 10973
-    _globals["_CONFIGREQUEST_ISMODIFIABLE"]._serialized_start = 10975
-    _globals["_CONFIGREQUEST_ISMODIFIABLE"]._serialized_end = 11009
-    _globals["_CONFIGRESPONSE"]._serialized_start = 11071
-    _globals["_CONFIGRESPONSE"]._serialized_end = 11246
-    _globals["_ADDARTIFACTSREQUEST"]._serialized_start = 11249
-    _globals["_ADDARTIFACTSREQUEST"]._serialized_end = 12251
-    _globals["_ADDARTIFACTSREQUEST_ARTIFACTCHUNK"]._serialized_start = 11724
-    _globals["_ADDARTIFACTSREQUEST_ARTIFACTCHUNK"]._serialized_end = 11777
-    _globals["_ADDARTIFACTSREQUEST_SINGLECHUNKARTIFACT"]._serialized_start = 
11779
-    _globals["_ADDARTIFACTSREQUEST_SINGLECHUNKARTIFACT"]._serialized_end = 
11890
-    _globals["_ADDARTIFACTSREQUEST_BATCH"]._serialized_start = 11892
-    _globals["_ADDARTIFACTSREQUEST_BATCH"]._serialized_end = 11985
-    _globals["_ADDARTIFACTSREQUEST_BEGINCHUNKEDARTIFACT"]._serialized_start = 
11988
-    _globals["_ADDARTIFACTSREQUEST_BEGINCHUNKEDARTIFACT"]._serialized_end = 
12181
-    _globals["_ADDARTIFACTSRESPONSE"]._serialized_start = 12254
-    _globals["_ADDARTIFACTSRESPONSE"]._serialized_end = 12526
-    _globals["_ADDARTIFACTSRESPONSE_ARTIFACTSUMMARY"]._serialized_start = 12445
-    _globals["_ADDARTIFACTSRESPONSE_ARTIFACTSUMMARY"]._serialized_end = 12526
-    _globals["_ARTIFACTSTATUSESREQUEST"]._serialized_start = 12529
-    _globals["_ARTIFACTSTATUSESREQUEST"]._serialized_end = 12855
-    _globals["_ARTIFACTSTATUSESRESPONSE"]._serialized_start = 12858
-    _globals["_ARTIFACTSTATUSESRESPONSE"]._serialized_end = 13210
-    _globals["_ARTIFACTSTATUSESRESPONSE_STATUSESENTRY"]._serialized_start = 
13053
-    _globals["_ARTIFACTSTATUSESRESPONSE_STATUSESENTRY"]._serialized_end = 13168
-    _globals["_ARTIFACTSTATUSESRESPONSE_ARTIFACTSTATUS"]._serialized_start = 
13170
-    _globals["_ARTIFACTSTATUSESRESPONSE_ARTIFACTSTATUS"]._serialized_end = 
13210
-    _globals["_INTERRUPTREQUEST"]._serialized_start = 13213
-    _globals["_INTERRUPTREQUEST"]._serialized_end = 13816
-    _globals["_INTERRUPTREQUEST_INTERRUPTTYPE"]._serialized_start = 13616
-    _globals["_INTERRUPTREQUEST_INTERRUPTTYPE"]._serialized_end = 13744
-    _globals["_INTERRUPTRESPONSE"]._serialized_start = 13819
-    _globals["_INTERRUPTRESPONSE"]._serialized_end = 13963
-    _globals["_REATTACHOPTIONS"]._serialized_start = 13965
-    _globals["_REATTACHOPTIONS"]._serialized_end = 14018
-    _globals["_RESULTCHUNKINGOPTIONS"]._serialized_start = 14021
-    _globals["_RESULTCHUNKINGOPTIONS"]._serialized_end = 14202
-    _globals["_REATTACHEXECUTEREQUEST"]._serialized_start = 14205
-    _globals["_REATTACHEXECUTEREQUEST"]._serialized_end = 14611
-    _globals["_RELEASEEXECUTEREQUEST"]._serialized_start = 14614
-    _globals["_RELEASEEXECUTEREQUEST"]._serialized_end = 15199
-    _globals["_RELEASEEXECUTEREQUEST_RELEASEALL"]._serialized_start = 15068
-    _globals["_RELEASEEXECUTEREQUEST_RELEASEALL"]._serialized_end = 15080
-    _globals["_RELEASEEXECUTEREQUEST_RELEASEUNTIL"]._serialized_start = 15082
-    _globals["_RELEASEEXECUTEREQUEST_RELEASEUNTIL"]._serialized_end = 15129
-    _globals["_RELEASEEXECUTERESPONSE"]._serialized_start = 15202
-    _globals["_RELEASEEXECUTERESPONSE"]._serialized_end = 15367
-    _globals["_RELEASESESSIONREQUEST"]._serialized_start = 15370
-    _globals["_RELEASESESSIONREQUEST"]._serialized_end = 15582
-    _globals["_RELEASESESSIONRESPONSE"]._serialized_start = 15584
-    _globals["_RELEASESESSIONRESPONSE"]._serialized_end = 15692
-    _globals["_FETCHERRORDETAILSREQUEST"]._serialized_start = 15695
-    _globals["_FETCHERRORDETAILSREQUEST"]._serialized_end = 16027
-    _globals["_FETCHERRORDETAILSRESPONSE"]._serialized_start = 16030
-    _globals["_FETCHERRORDETAILSRESPONSE"]._serialized_end = 18039
-    _globals["_FETCHERRORDETAILSRESPONSE_STACKTRACEELEMENT"]._serialized_start 
= 16259
-    _globals["_FETCHERRORDETAILSRESPONSE_STACKTRACEELEMENT"]._serialized_end = 
16433
-    _globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT"]._serialized_start = 
16436
-    _globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT"]._serialized_end = 16804
-    
_globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT_CONTEXTTYPE"]._serialized_start
 = 16767
-    
_globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT_CONTEXTTYPE"]._serialized_end 
= 16804
-    _globals["_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE"]._serialized_start = 
16807
-    _globals["_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE"]._serialized_end = 
17357
+    ]._serialized_end = 9115
+    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICVALUE"]._serialized_start = 
9117
+    _globals["_EXECUTEPLANRESPONSE_METRICS_METRICVALUE"]._serialized_end = 9205
+    _globals["_EXECUTEPLANRESPONSE_OBSERVEDMETRICS"]._serialized_start = 9208
+    _globals["_EXECUTEPLANRESPONSE_OBSERVEDMETRICS"]._serialized_end = 9483
+    _globals["_EXECUTEPLANRESPONSE_RESULTCOMPLETE"]._serialized_start = 9485
+    _globals["_EXECUTEPLANRESPONSE_RESULTCOMPLETE"]._serialized_end = 9501
+    _globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS"]._serialized_start = 9504
+    _globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS"]._serialized_end = 9837
+    
_globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS_STAGEINFO"]._serialized_start 
= 9660
+    
_globals["_EXECUTEPLANRESPONSE_EXECUTIONPROGRESS_STAGEINFO"]._serialized_end = 
9837
+    _globals["_KEYVALUE"]._serialized_start = 9856
+    _globals["_KEYVALUE"]._serialized_end = 9921
+    _globals["_CONFIGREQUEST"]._serialized_start = 9924
+    _globals["_CONFIGREQUEST"]._serialized_end = 11123
+    _globals["_CONFIGREQUEST_OPERATION"]._serialized_start = 10232
+    _globals["_CONFIGREQUEST_OPERATION"]._serialized_end = 10730
+    _globals["_CONFIGREQUEST_SET"]._serialized_start = 10732
+    _globals["_CONFIGREQUEST_SET"]._serialized_end = 10824
+    _globals["_CONFIGREQUEST_GET"]._serialized_start = 10826
+    _globals["_CONFIGREQUEST_GET"]._serialized_end = 10851
+    _globals["_CONFIGREQUEST_GETWITHDEFAULT"]._serialized_start = 10853
+    _globals["_CONFIGREQUEST_GETWITHDEFAULT"]._serialized_end = 10916
+    _globals["_CONFIGREQUEST_GETOPTION"]._serialized_start = 10918
+    _globals["_CONFIGREQUEST_GETOPTION"]._serialized_end = 10949
+    _globals["_CONFIGREQUEST_GETALL"]._serialized_start = 10951
+    _globals["_CONFIGREQUEST_GETALL"]._serialized_end = 10999
+    _globals["_CONFIGREQUEST_UNSET"]._serialized_start = 11001
+    _globals["_CONFIGREQUEST_UNSET"]._serialized_end = 11028
+    _globals["_CONFIGREQUEST_ISMODIFIABLE"]._serialized_start = 11030
+    _globals["_CONFIGREQUEST_ISMODIFIABLE"]._serialized_end = 11064
+    _globals["_CONFIGRESPONSE"]._serialized_start = 11126
+    _globals["_CONFIGRESPONSE"]._serialized_end = 11301
+    _globals["_ADDARTIFACTSREQUEST"]._serialized_start = 11304
+    _globals["_ADDARTIFACTSREQUEST"]._serialized_end = 12306
+    _globals["_ADDARTIFACTSREQUEST_ARTIFACTCHUNK"]._serialized_start = 11779
+    _globals["_ADDARTIFACTSREQUEST_ARTIFACTCHUNK"]._serialized_end = 11832
+    _globals["_ADDARTIFACTSREQUEST_SINGLECHUNKARTIFACT"]._serialized_start = 
11834
+    _globals["_ADDARTIFACTSREQUEST_SINGLECHUNKARTIFACT"]._serialized_end = 
11945
+    _globals["_ADDARTIFACTSREQUEST_BATCH"]._serialized_start = 11947
+    _globals["_ADDARTIFACTSREQUEST_BATCH"]._serialized_end = 12040
+    _globals["_ADDARTIFACTSREQUEST_BEGINCHUNKEDARTIFACT"]._serialized_start = 
12043
+    _globals["_ADDARTIFACTSREQUEST_BEGINCHUNKEDARTIFACT"]._serialized_end = 
12236
+    _globals["_ADDARTIFACTSRESPONSE"]._serialized_start = 12309
+    _globals["_ADDARTIFACTSRESPONSE"]._serialized_end = 12581
+    _globals["_ADDARTIFACTSRESPONSE_ARTIFACTSUMMARY"]._serialized_start = 12500
+    _globals["_ADDARTIFACTSRESPONSE_ARTIFACTSUMMARY"]._serialized_end = 12581
+    _globals["_ARTIFACTSTATUSESREQUEST"]._serialized_start = 12584
+    _globals["_ARTIFACTSTATUSESREQUEST"]._serialized_end = 12910
+    _globals["_ARTIFACTSTATUSESRESPONSE"]._serialized_start = 12913
+    _globals["_ARTIFACTSTATUSESRESPONSE"]._serialized_end = 13265
+    _globals["_ARTIFACTSTATUSESRESPONSE_STATUSESENTRY"]._serialized_start = 
13108
+    _globals["_ARTIFACTSTATUSESRESPONSE_STATUSESENTRY"]._serialized_end = 13223
+    _globals["_ARTIFACTSTATUSESRESPONSE_ARTIFACTSTATUS"]._serialized_start = 
13225
+    _globals["_ARTIFACTSTATUSESRESPONSE_ARTIFACTSTATUS"]._serialized_end = 
13265
+    _globals["_INTERRUPTREQUEST"]._serialized_start = 13268
+    _globals["_INTERRUPTREQUEST"]._serialized_end = 13871
+    _globals["_INTERRUPTREQUEST_INTERRUPTTYPE"]._serialized_start = 13671
+    _globals["_INTERRUPTREQUEST_INTERRUPTTYPE"]._serialized_end = 13799
+    _globals["_INTERRUPTRESPONSE"]._serialized_start = 13874
+    _globals["_INTERRUPTRESPONSE"]._serialized_end = 14018
+    _globals["_REATTACHOPTIONS"]._serialized_start = 14020
+    _globals["_REATTACHOPTIONS"]._serialized_end = 14073
+    _globals["_RESULTCHUNKINGOPTIONS"]._serialized_start = 14076
+    _globals["_RESULTCHUNKINGOPTIONS"]._serialized_end = 14257
+    _globals["_REATTACHEXECUTEREQUEST"]._serialized_start = 14260
+    _globals["_REATTACHEXECUTEREQUEST"]._serialized_end = 14666
+    _globals["_RELEASEEXECUTEREQUEST"]._serialized_start = 14669
+    _globals["_RELEASEEXECUTEREQUEST"]._serialized_end = 15254
+    _globals["_RELEASEEXECUTEREQUEST_RELEASEALL"]._serialized_start = 15123
+    _globals["_RELEASEEXECUTEREQUEST_RELEASEALL"]._serialized_end = 15135
+    _globals["_RELEASEEXECUTEREQUEST_RELEASEUNTIL"]._serialized_start = 15137
+    _globals["_RELEASEEXECUTEREQUEST_RELEASEUNTIL"]._serialized_end = 15184
+    _globals["_RELEASEEXECUTERESPONSE"]._serialized_start = 15257
+    _globals["_RELEASEEXECUTERESPONSE"]._serialized_end = 15422
+    _globals["_RELEASESESSIONREQUEST"]._serialized_start = 15425
+    _globals["_RELEASESESSIONREQUEST"]._serialized_end = 15637
+    _globals["_RELEASESESSIONRESPONSE"]._serialized_start = 15639
+    _globals["_RELEASESESSIONRESPONSE"]._serialized_end = 15747
+    _globals["_FETCHERRORDETAILSREQUEST"]._serialized_start = 15750
+    _globals["_FETCHERRORDETAILSREQUEST"]._serialized_end = 16082
+    _globals["_FETCHERRORDETAILSRESPONSE"]._serialized_start = 16085
+    _globals["_FETCHERRORDETAILSRESPONSE"]._serialized_end = 18094
+    _globals["_FETCHERRORDETAILSRESPONSE_STACKTRACEELEMENT"]._serialized_start 
= 16314
+    _globals["_FETCHERRORDETAILSRESPONSE_STACKTRACEELEMENT"]._serialized_end = 
16488
+    _globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT"]._serialized_start = 
16491
+    _globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT"]._serialized_end = 16859
+    
_globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT_CONTEXTTYPE"]._serialized_start
 = 16822
+    
_globals["_FETCHERRORDETAILSRESPONSE_QUERYCONTEXT_CONTEXTTYPE"]._serialized_end 
= 16859
+    _globals["_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE"]._serialized_start = 
16862
+    _globals["_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE"]._serialized_end = 
17412
     _globals[
         "_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE_MESSAGEPARAMETERSENTRY"
-    ]._serialized_start = 17234
+    ]._serialized_start = 17289
     _globals[
         "_FETCHERRORDETAILSRESPONSE_SPARKTHROWABLE_MESSAGEPARAMETERSENTRY"
-    ]._serialized_end = 17302
-    
_globals["_FETCHERRORDETAILSRESPONSE_BREAKINGCHANGEINFO"]._serialized_start = 
17360
-    _globals["_FETCHERRORDETAILSRESPONSE_BREAKINGCHANGEINFO"]._serialized_end 
= 17610
-    _globals["_FETCHERRORDETAILSRESPONSE_MITIGATIONCONFIG"]._serialized_start 
= 17612
-    _globals["_FETCHERRORDETAILSRESPONSE_MITIGATIONCONFIG"]._serialized_end = 
17670
-    _globals["_FETCHERRORDETAILSRESPONSE_ERROR"]._serialized_start = 17673
-    _globals["_FETCHERRORDETAILSRESPONSE_ERROR"]._serialized_end = 18020
-    _globals["_CHECKPOINTCOMMANDRESULT"]._serialized_start = 18041
-    _globals["_CHECKPOINTCOMMANDRESULT"]._serialized_end = 18131
-    _globals["_CLONESESSIONREQUEST"]._serialized_start = 18134
-    _globals["_CLONESESSIONREQUEST"]._serialized_end = 18496
-    _globals["_CLONESESSIONRESPONSE"]._serialized_start = 18499
-    _globals["_CLONESESSIONRESPONSE"]._serialized_end = 18703
-    _globals["_GETSTATUSREQUEST"]._serialized_start = 18706
-    _globals["_GETSTATUSREQUEST"]._serialized_end = 19301
-    _globals["_GETSTATUSREQUEST_OPERATIONSTATUSREQUEST"]._serialized_start = 
19105
-    _globals["_GETSTATUSREQUEST_OPERATIONSTATUSREQUEST"]._serialized_end = 
19221
-    _globals["_GETSTATUSRESPONSE"]._serialized_start = 19304
-    _globals["_GETSTATUSRESPONSE"]._serialized_end = 19989
-    _globals["_GETSTATUSRESPONSE_OPERATIONSTATUS"]._serialized_start = 19562
-    _globals["_GETSTATUSRESPONSE_OPERATIONSTATUS"]._serialized_end = 19989
-    
_globals["_GETSTATUSRESPONSE_OPERATIONSTATUS_OPERATIONSTATE"]._serialized_start 
= 19759
-    
_globals["_GETSTATUSRESPONSE_OPERATIONSTATUS_OPERATIONSTATE"]._serialized_end = 
19989
-    _globals["_SPARKCONNECTSERVICE"]._serialized_start = 20075
-    _globals["_SPARKCONNECTSERVICE"]._serialized_end = 21194
+    ]._serialized_end = 17357
+    
_globals["_FETCHERRORDETAILSRESPONSE_BREAKINGCHANGEINFO"]._serialized_start = 
17415
+    _globals["_FETCHERRORDETAILSRESPONSE_BREAKINGCHANGEINFO"]._serialized_end 
= 17665
+    _globals["_FETCHERRORDETAILSRESPONSE_MITIGATIONCONFIG"]._serialized_start 
= 17667
+    _globals["_FETCHERRORDETAILSRESPONSE_MITIGATIONCONFIG"]._serialized_end = 
17725
+    _globals["_FETCHERRORDETAILSRESPONSE_ERROR"]._serialized_start = 17728
+    _globals["_FETCHERRORDETAILSRESPONSE_ERROR"]._serialized_end = 18075
+    _globals["_CHECKPOINTCOMMANDRESULT"]._serialized_start = 18096
+    _globals["_CHECKPOINTCOMMANDRESULT"]._serialized_end = 18186
+    _globals["_CLONESESSIONREQUEST"]._serialized_start = 18189
+    _globals["_CLONESESSIONREQUEST"]._serialized_end = 18551
+    _globals["_CLONESESSIONRESPONSE"]._serialized_start = 18554
+    _globals["_CLONESESSIONRESPONSE"]._serialized_end = 18758
+    _globals["_GETSTATUSREQUEST"]._serialized_start = 18761
+    _globals["_GETSTATUSREQUEST"]._serialized_end = 19356
+    _globals["_GETSTATUSREQUEST_OPERATIONSTATUSREQUEST"]._serialized_start = 
19160
+    _globals["_GETSTATUSREQUEST_OPERATIONSTATUSREQUEST"]._serialized_end = 
19276
+    _globals["_GETSTATUSRESPONSE"]._serialized_start = 19359
+    _globals["_GETSTATUSRESPONSE"]._serialized_end = 20044
+    _globals["_GETSTATUSRESPONSE_OPERATIONSTATUS"]._serialized_start = 19617
+    _globals["_GETSTATUSRESPONSE_OPERATIONSTATUS"]._serialized_end = 20044
+    
_globals["_GETSTATUSRESPONSE_OPERATIONSTATUS_OPERATIONSTATE"]._serialized_start 
= 19814
+    
_globals["_GETSTATUSRESPONSE_OPERATIONSTATUS_OPERATIONSTATE"]._serialized_end = 
20044
+    _globals["_SPARKCONNECTSERVICE"]._serialized_start = 20130
+    _globals["_SPARKCONNECTSERVICE"]._serialized_end = 21249
 # @@protoc_insertion_point(module_scope)
diff --git a/python/pyspark/sql/connect/proto/base_pb2.pyi 
b/python/pyspark/sql/connect/proto/base_pb2.pyi
index 2db3132cd0c0..7750dc672654 100644
--- a/python/pyspark/sql/connect/proto/base_pb2.pyi
+++ b/python/pyspark/sql/connect/proto/base_pb2.pyi
@@ -1015,6 +1015,7 @@ class 
AnalyzePlanResponse(google.protobuf.message.Message):
     UNPERSIST_FIELD_NUMBER: builtins.int
     GET_STORAGE_LEVEL_FIELD_NUMBER: builtins.int
     JSON_TO_DDL_FIELD_NUMBER: builtins.int
+    EXTENSIONS_FIELD_NUMBER: builtins.int
     session_id: builtins.str
     server_side_session_id: builtins.str
     """Server-side generated idempotency key that the client can use to assert 
that the server side
@@ -1048,6 +1049,13 @@ class 
AnalyzePlanResponse(google.protobuf.message.Message):
     def get_storage_level(self) -> 
global___AnalyzePlanResponse.GetStorageLevel: ...
     @property
     def json_to_ddl(self) -> global___AnalyzePlanResponse.JsonToDDL: ...
+    @property
+    def extensions(
+        self,
+    ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[
+        google.protobuf.any_pb2.Any
+    ]:
+        """Support arbitrary result objects."""
     def __init__(
         self,
         *,
@@ -1067,6 +1075,7 @@ class 
AnalyzePlanResponse(google.protobuf.message.Message):
         unpersist: global___AnalyzePlanResponse.Unpersist | None = ...,
         get_storage_level: global___AnalyzePlanResponse.GetStorageLevel | None 
= ...,
         json_to_ddl: global___AnalyzePlanResponse.JsonToDDL | None = ...,
+        extensions: collections.abc.Iterable[google.protobuf.any_pb2.Any] | 
None = ...,
     ) -> None: ...
     def HasField(
         self,
@@ -1110,6 +1119,8 @@ class 
AnalyzePlanResponse(google.protobuf.message.Message):
             b"ddl_parse",
             "explain",
             b"explain",
+            "extensions",
+            b"extensions",
             "get_storage_level",
             b"get_storage_level",
             "input_files",
diff --git a/sql/connect/common/src/main/protobuf/spark/connect/base.proto 
b/sql/connect/common/src/main/protobuf/spark/connect/base.proto
index c7247129f190..be4ab641c7b5 100644
--- a/sql/connect/common/src/main/protobuf/spark/connect/base.proto
+++ b/sql/connect/common/src/main/protobuf/spark/connect/base.proto
@@ -253,6 +253,9 @@ message AnalyzePlanResponse {
     JsonToDDL json_to_ddl = 16;
   }
 
+  // Support arbitrary result objects.
+  repeated google.protobuf.Any extensions = 999;
+
   message Schema {
     DataType schema = 1;
   }


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

Reply via email to