
    _                        S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSKJ	r
  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKrSS0rS r\R>                  \R@                  " \RB                  RD                  \RB                  RF                  \RB                  RH                  5      \RJ                   " S S\RL                  5      5       5       5       r'g)zGCommand to query metadata against Dataproc Metastore services database.    )absolute_import)division)unicode_literalsN)
exceptions)operations_util)services_util)util)storage_api)storage_util)base)resource_args)log)resource_printerEXAMPLESa)            To query metadata against a Dataproc Metastore service with the name
          `my-metastore-service` in location `us-central1`, and the sql query
          "show tables;", run:

          $ {command} my-metastore-service --location=us-central1
          --query="show tables;"

        c                 V    [         R                  " U SSSSS9  U R                  SSSS9  g)	zvParses provided arguments to add base arguments used for Alpha/Beta/GA.

Args:
  parser: an argparse argument parser.
zto query metadataFT)pluralrequired
positionalz--queryz            Use Google Standard SQL query for Cloud Spanner and MySQL query
            syntax for Cloud SQL. Cloud Spanner SQL is described at
            https://cloud.google.com/spanner/docs/query-syntax)"
        )r   helpN)r   AddServiceResourceArgadd_argumentparsers    0lib/surface/metastore/services/query_metadata.pyAddBaseArgsr   3   s=     %%!%$4Q      c                   8    \ rS rSrSr\r\S 5       rS r	S r
Srg)QueryF   zDExecute a SQL query against a Dataproc Metastore Service's metadata.c                 X    [        U 5        [        R                  R                  U 5        g)zSee base class.N)r   r   FORMAT_FLAGAddToParserr   s    r   Args
Query.ArgsP   s        (r   c                 X   UR                   R                  R                  5       nSn [        R                  " UR                  5       UR                  U R                  5       S9n[        R                  R                  SR                  UR                  5      5        Sn ["        R$                  " USR                  UR                  5       5      U R                  5       S9nUb*  UR.                  (       a  [1        UR.                  5      S	:  a  gSnUR.                   H+  nUR2                  S
:X  d  M  UR4                  R6                  nM-     Uc  g[8        R:                  " 5       n[<        R>                  " [@        RB                  " URE                  [F        RH                  RK                  US5      5      SS95      n	[        R                  R                  U	S   S   U5        U	S   (       d  g[1        U	S   5      S:  a  [        R                  R                  S5        U	S   S   n
[<        R>                  " [@        RB                  " URE                  [F        RH                  RK                  [L        RN                  " [L        RP                  " U5      U
5      S5      5      SS95      $ ! [        R                   a    [        R                   " S5      ef = f! [        R&                   aD  n[        R(                  " UR                  5       SS[*        R,                  " U5      S9   SnAGNDSnAff = f)zRuns this command.

Args:
  args: an argparse namespace. All the arguments that were provided to this
    command invocation.

Returns:
  Some value that we want to have printed later.
N)release_trackzwith operation [{}]zQuery did not succeed.zWaiting for [{}] to queryserviceF)kindis_asyncfailed   resultManifestUriTzutf-8)encodingstatusmessage	filenames   zcThe number of rows exceeds 1000 to display. Please find more results at the cloud storage location.r   ))CONCEPTSr'   Parseservices_api_utilQueryMetadataRelativeNamequeryReleaseTrackr   outPrintformatnameapitools_exceptions	HttpErrorapi_utilQueryMetadataErrorr   PollAndReturnOperationOperationErrorUpdatedResourcesix	text_typeadditionalPropertieslenkeyvaluestring_valuer
   StorageClientjsonloadioTextIOWrapper
ReadObjectr   ObjectReferenceFromUrl	posixpathjoindirname)selfargsenv_ref	operationoperation_resulteresult_manifest_urir/   
gcs_clientresult_manifest_jsonquery_result_file_names              r   Run	Query.RunV   s    mm##))+GIB#11



 $**D<M<M<OQi	ggmm)00@A 
#(??

%
,
,W-A-A-C
D))+- 	 11112Q6#88	+	+%mm88 9 "**,J99
!!,,445H59;< 		 GGMM&x0;%',
,-1	ggmm N O1+>qA99
!!,,44NN!))*=>. 	 	
 S (( B''(@AAB "" #	



 q!	# ##s%   A4J# AK #+KL)%9L$$L)c                 p   U(       a  SU;  d  SUS   ;  d  SU;  a  gUS   S    Vs/ s H  nUS   =(       d    SPM     nnSR                  S [        U5       5       5      nUS    Vs/ s H  nS	U0PM	     nn[        R                  " US
R	                  U5      [
        R                  S9  gs  snf s  snf )a,  Displays the server response to a query.

This is called higher up the stack to over-write default display behavior.
What gets displayed depends on the mode in which the query was run.

Args:
  args: The arguments originally passed to the command.
  result: The output of the command before display.
metadatacolumnsrowsNr<   z(Unspecified),c              3   H   #    U  H  u  pS R                  X5      v   M     g7f)z!row.slice({0}).join():label="{1}"N)r;   ).0ifs      r   	<genexpr> Query.Display.<locals>.<genexpr>   s(      ;(9 @FFqLL(9s    "rowz
table({0}))r9   )rT   	enumerater   r:   r;   r   r9   )rV   rW   resultfieldfieldstable_formatrm   re   s           r   DisplayQuery.Display   s     Zv-&C 2V+ J'	22E 	f((2  
 88 ;(1&(9; ;L$*6N3NSUCLND34!4!4\!BP 4s   B.*B3 N)__name__
__module____qualname____firstlineno____doc__DETAILED_HELPdetailed_helpstaticmethodr#   r`   rs   __static_attributes__ru   r   r   r   r   F   s,     M-) )
GRQr   r   )(rz   
__future__r   r   r   rN   rL   rS   apitools.base.pyr   r=    googlecloudsdk.api_lib.metastorer   r   r4   r	   r?   googlecloudsdk.api_lib.storager
   r   googlecloudsdk.callioper   $googlecloudsdk.command_lib.metastorer   googlecloudsdk.corer   googlecloudsdk.core.resourcer   rD   r{   r   UnicodeIsSupportedReleaseTracksr8   ALPHABETAGADefaultUniverseOnlyCommandr   ru   r   r   <module>r      s    N &  ' 	   > < O = 6 7 ( > # 9 
 	& T..33T5F5F5I5I jQDLL jQ  
jQr   