Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
atlas
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dataplatform
atlas
Commits
b8eecb20
Commit
b8eecb20
authored
Dec 30, 2014
by
Harish Butani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
finish ThriftParser
parent
cbecec83
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
671 additions
and
90 deletions
+671
-90
ThriftParser.scala
...rg/apache/hadoop/metadata/tools/thrift/ThriftParser.scala
+195
-90
test.thrift
typesystem/src/test/resources/test.thrift
+0
-0
ThriftLexerTest.scala
...apache/hadoop/metadata/tools/thrift/ThriftLexerTest.scala
+28
-0
ThriftParserTest.scala
...pache/hadoop/metadata/tools/thrift/ThriftParserTest.scala
+448
-0
No files found.
typesystem/src/main/scala/org/apache/hadoop/metadata/tools/thrift/ThriftParser.scala
View file @
b8eecb20
...
...
@@ -104,12 +104,12 @@ case class UnionDef(val name : String, val xsdAll : Boolean,
val
fields
:
List
[
FieldDef
],
val
typAnnotations
:
Option
[
List
[
TypeAnnotation
]])
case
class
ExceptionDef
(
val
name
:
String
,
val
xsdAll
:
Boolean
,
case
class
ExceptionDef
(
val
name
:
String
,
val
fields
:
List
[
FieldDef
],
val
typAnnotations
:
Option
[
List
[
TypeAnnotation
]])
case
class
FunctionDef
(
oneway
:
Boolean
,
returnType
:
FunctionType
,
name
:
String
,
parameters
:
List
[
FieldDef
],
throwFields
:
List
[
FieldDef
],
typAnnotations
:
Option
[
List
[
TypeAnnotation
]])
throwFields
:
Option
[
List
[
FieldDef
]
],
typAnnotations
:
Option
[
List
[
TypeAnnotation
]])
case
class
ServiceDef
(
name
:
String
,
superName
:
Option
[
String
],
functions
:
List
[
FunctionDef
],
typAnnotations
:
Option
[
List
[
TypeAnnotation
]])
...
...
@@ -193,16 +193,15 @@ case class ThriftDef(val includes : List[IncludeDef],
}
class
ThriftParser
extends
StandardTokenParsers
with
PackratParsers
{
trait
ThriftKeywords
{
this
:
StandardTokenParsers
=>
import
scala.language.implicitConversions
import
scala.language.higherKinds
protected
case
class
Keyword
(
str
:
String
)
protected
implicit
def
asParser
(
k
:
Keyword
)
:
Parser
[
String
]
=
k
.
str
protected
val
LPAREN
=
Keyword
(
"("
)
protected
val
RPAREN
=
Keyword
(
")"
)
protected
val
EQ
=
Keyword
(
"="
)
...
...
@@ -228,7 +227,7 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
protected
val
THROWS
=
Keyword
(
"throws"
)
protected
val
ONEWAY
=
Keyword
(
"oneway"
)
protected
val
EXTENDS
=
Keyword
(
"extends"
)
protected
val
SERVIC
=
Keyword
(
"service"
)
protected
val
SERVIC
E
=
Keyword
(
"service"
)
protected
val
EXCEPTION
=
Keyword
(
"exception"
)
protected
val
LBRACKET
=
Keyword
(
"{"
)
protected
val
RBRACKET
=
Keyword
(
"}"
)
...
...
@@ -252,16 +251,148 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
protected
val
STAR
=
Keyword
(
"*"
)
protected
val
CPP_NS
=
Keyword
(
"cpp_namespace"
)
protected
val
PHP_NS
=
Keyword
(
"php_namespace"
)
protected
val
PY_NS
=
Keyword
(
"py_
namespac
e"
)
protected
val
PERL_NS
=
Keyword
(
"perl_
namespac
e"
)
protected
val
PY_NS
=
Keyword
(
"py_
modul
e"
)
protected
val
PERL_NS
=
Keyword
(
"perl_
packag
e"
)
protected
val
RUBY_NS
=
Keyword
(
"ruby_namespace"
)
protected
val
SMLTK_CAT
=
Keyword
(
"smalltalk_category"
)
protected
val
SMLTK_PRE
=
Keyword
(
"smalltalk_prefix"
)
protected
val
JAVA_NS
=
Keyword
(
"java_
namespac
e"
)
protected
val
COCOA_NS
=
Keyword
(
"cocoa_
namespac
e"
)
protected
val
JAVA_NS
=
Keyword
(
"java_
packag
e"
)
protected
val
COCOA_NS
=
Keyword
(
"cocoa_
packag
e"
)
protected
val
XSD_NS
=
Keyword
(
"xsd_namespace"
)
protected
val
CSHARP_NS
=
Keyword
(
"csharp_namespace"
)
def
isRequired
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
REQUIRED
)
=>
true
case
_
=>
false
}
def
isXsdOptional
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
XSD_OPT
)
=>
true
case
_
=>
false
}
def
isXsdNillable
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
XSD_NILBLE
)
=>
true
case
_
=>
false
}
def
isXsdAll
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
XSD_ALL
)
=>
true
case
_
=>
false
}
def
isOneWay
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
ONEWAY
)
=>
true
case
_
=>
false
}
}
trait
ThriftTypeRules
extends
ThriftKeywords
{
this
:
StandardTokenParsers
=>
def
containterType
:
Parser
[
ContainerType
]
=
mapType
|
setType
|
listType
def
setType
=
SET
~
cppType
.?
~
LT
~
fieldType
~
GT
~
typeAnnotations
.?
^^
{
case
s
~
ct
~
lt
~
t
~
gt
~
tA
=>
SetType
(
t
,
ct
,
tA
)
}
def
listType
=
LIST
~
LT
~
fieldType
~
GT
~
cppType
.?
~
typeAnnotations
.?
^^
{
case
l
~
lt
~
t
~
gt
~
ct
~
tA
=>
ListType
(
t
,
ct
,
tA
)
}
def
mapType
=
MAP
~
cppType
.?
~
LT
~
fieldType
~
COMMA
~
fieldType
~
GT
~
typeAnnotations
.?
^^
{
case
s
~
ct
~
lt
~
kt
~
c
~
vt
~
gt
~
tA
=>
MapType
(
kt
,
vt
,
ct
,
tA
)
}
def
cppType
:
Parser
[
CPPType
]
=
CPP_TYPE
~
stringLit
^^
{
case
c
~
s
=>
CPPType
(
s
)}
def
fieldType
:
Parser
[
FieldType
]
=
ident
^^
{
case
i
=>
IdentifierType
(
i
)}
|
baseType
|
containterType
def
baseType
:
Parser
[
BaseType
]
=
simpleBaseType
~
typeAnnotations
.?
^^
{
case
s
~
t
=>
BaseType
(
s
,
t
)}
def
simpleBaseType
:
Parser
[
BASE_TYPES.Value
]
=
STRING
^^^
BASE_TYPES
.
STRING
|
BINARY
^^^
BASE_TYPES
.
BINARY
|
SLIST
^^^
BASE_TYPES
.
SLIST
|
BOOL
^^^
BASE_TYPES
.
BOOLEAN
|
BYTE
^^^
BASE_TYPES
.
BYTE
|
I16
^^^
BASE_TYPES
.
I16
|
I32
^^^
BASE_TYPES
.
I32
|
I64
^^^
BASE_TYPES
.
I64
|
DOUBLE
^^^
BASE_TYPES
.
DOUBLE
def
typeAnnotations
:
Parser
[
List
[
TypeAnnotation
]]
=
LPAREN
~
typeAnnotation
.*
~
RPAREN
^^
{
case
l
~
t
~
r
=>
t
.
toList
}
def
typeAnnotation
:
Parser
[
TypeAnnotation
]
=
(
ident
~
EQ
~
stringLit
~
commaOrSemicolon
.?)
^^
{
case
i
~
e
~
s
~
c
=>
TypeAnnotation
(
i
,
s
)}
def
commaOrSemicolon
:
Parser
[
String
]
=
COMMA
|
SEMICOLON
}
/**
* @todo extract Constant Rules into this Trait. This requires moving `hexConstant` here. But how to specify
* type of `HexConstant`, it is a Path dependent Type tied to lexical member of ThriftParser.
*/
trait
ThriftConstantRules
extends
ThriftKeywords
{
this:
StandardTokenParsers
=>
// def parseDouble(s: String) = try { Some(s.toDouble) } catch { case _ : Throwable => None }
//
// def constValue : Parser[ConstValue] = numericLit ^^ {
// case n => parseDouble(n) match {
// case Some(d) => DoubleConstant(d)
// case _ => IntConstant(n.toInt)
// }
// } |
// hexConstant ^^ { case h => IntConstant(Integer.parseInt(h, 16))} |
// stringLit ^^ { case s => StringConstant(s)} |
// ident ^^ { case i => IdConstant(i)} |
// constList |
// constMap
//
// def constValuePair = constValue ~ COLON ~ constValue ~ commaOrSemicolon.? ^^ {
// case k ~ c ~ v ~ cs => ConstantValuePair(k,v)
// }
//
// def constList = LSQBRACKET ~ (constValue <~ commaOrSemicolon).* ~ RSQBRACKET ^^ {
// case l ~ vs ~ r => ConstantList(vs)
// }
//
// def constMap = LBRACKET ~ constValuePair.* ~ RBRACKET ^^ {
// case l ~ ps ~ r => ConstantMap(ps)
// }
}
/**
* A Parser for Thrift definition scripts.
* Based on [[https://github.com/twitter/commons/blob/master/src/antlr/twitter/thrift/descriptors/AntlrThrift.g]].
* Definition is parsed into a [[org.apache.hadoop.metadata.tools.thrift.ThriftDef ThriftDef]] structure.
*
* @example {{{
* var p = new ThriftParser
* var td : Option[ThriftDef] = p("""include "share/fb303/if/fb303.thrift"
* namespace java org.apache.hadoop.hive.metastore.api
* namespace php metastore
* namespace cpp Apache.Hadoop.Hive
* \""")
* }}}
*
* @todo doesn't traverse includes directives. Includes are parsed into
* [[org.apache.hadoop.metadata.tools.thrift.IncludeDef IncludeDef]] structures
* but are not traversed.
* @todo mixing in [[scala.util.parsing.combinator.PackratParsers PackratParsers]] is a placeholder. Need to
* change specific grammar rules to `lazy val` and `Parser[Elem]` to `PackratParser[Elem]`. Will do based on
* performance analysis.
* @todo Error reporting
*/
class
ThriftParser
extends
StandardTokenParsers
with
ThriftKeywords
with
ThriftTypeRules
with
PackratParsers
{
import
scala.language.higherKinds
private
val
reservedWordsDelims
:
Seq
[
String
]
=
this
.
getClass
...
...
@@ -283,24 +414,9 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
phrase
(
program
)(
new
lexical
.
Scanner
(
input
))
match
{
case
Success
(
r
,
x
)
=>
Some
(
r
)
case
Failure
(
m
,
x
)
=>
{
println
(
m
)
println
(
x
.
offset
)
None
}
case
Error
(
m
,
x
)
=>
{
println
(
m
)
println
(
x
.
offset
)
None
}
}
}
def
applyStringLit
[
X
](
input
:
String
)
:
Option
[
String
]
=
{
phrase
(
stringLit
)(
new
lexical
.
Scanner
(
input
))
match
{
case
Success
(
r
,
x
)
=>
Some
(
r
)
case
Failure
(
m
,
x
)
=>
{
println
(
m
)
println
(
x
.
offset
)
None
}
}
...
...
@@ -326,13 +442,21 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
XSD_NS
~
ident
^^
{
case
ns
~
i
=>
new
ThriftDef
(
NamespaceDef
(
THRIFT_LANG
.
XSD
,
i
))}
|
CSHARP_NS
~
ident
^^
{
case
ns
~
i
=>
new
ThriftDef
(
NamespaceDef
(
THRIFT_LANG
.
CSHARP
,
i
))}
def
definitions
=
typeDefinition
.*
^^
{
case
l
=>
l
.
foldRight
(
new
ThriftDef
)((
a
,
t
)
=>
t
plus
a
)}
def
definitions
:
Parser
[
ThriftDef
]
=
definition
.*
^^
{
case
l
=>
l
.
foldRight
(
new
ThriftDef
)((
a
,
t
)
=>
t
plus
a
)
}
def
definition
=
typeDefinition
def
definition
:
Parser
[
ThriftDef
]
=
const
^^
{
case
c
=>
new
ThriftDef
(
c
)}
|
typeDefinition
|
service
^^
{
case
s
=>
new
ThriftDef
(
s
)}
def
typeDefinition
[
Parser
[
ThriftDef
]]
=
(
typedef
^^
{
case
t
=>
new
ThriftDef
(
t
)}
|
def
typeDefinition
:
Parser
[
ThriftDef
]
=
(
typedef
^^
{
case
t
=>
new
ThriftDef
(
t
)}
|
enum
^^
{
case
e
=>
new
ThriftDef
(
e
)}
|
senum
^^
{
case
e
=>
new
ThriftDef
(
e
)}
senum
^^
{
case
e
=>
new
ThriftDef
(
e
)}
|
struct
^^
{
case
e
=>
new
ThriftDef
(
e
)}
|
union
^^
{
case
e
=>
new
ThriftDef
(
e
)}
|
xception
^^
{
case
e
=>
new
ThriftDef
(
e
)}
)
def
typedef
:
Parser
[
TypeDef
]
=
TYPEDEF
~
fieldType
~
ident
~
typeAnnotations
.?
^^
{
...
...
@@ -353,26 +477,39 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
def
senumDef
:
Parser
[
String
]
=
stringLit
<~
commaOrSemicolon
.?
def
struct
=
STRUCT
~
ident
~
XSD_ALL
.?
~
LBRACKET
def
service
:
Parser
[
ServiceDef
]
=
SERVICE
~
ident
~
extnds
.?
~
LBRACKET
~
function
.*
~
RBRACKET
~
typeAnnotations
.?
^^
{
case
s
~
i
~
e
~
lb
~
fs
~
rb
~
tA
=>
ServiceDef
(
i
,
e
,
fs
,
tA
)
}
def
isRequired
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
REQUIRED
)
=>
true
case
_
=>
false
def
extnds
:
Parser
[
String
]
=
EXTENDS
~>
ident
def
function
:
Parser
[
FunctionDef
]
=
ONEWAY
.?
~
functionType
~
ident
~
LPAREN
~
field
.*
~
RPAREN
~
throwz
.?
~
typeAnnotations
.?
~
commaOrSemicolon
.?
^^
{
case
o
~
fT
~
i
~
lp
~
fs
~
rp
~
th
~
tA
~
cS
=>
FunctionDef
(
isOneWay
(
o
),
fT
,
i
,
fs
,
th
,
tA
)
}
def
isXsdOptional
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
XSD_OPT
)
=>
true
case
_
=>
false
def
throwz
:
Parser
[
List
[
FieldDef
]]
=
THROWS
~
LPAREN
~
field
.*
~
RPAREN
^^
{
case
t
~
l
~
fs
~
r
=>
fs
.
toList
}
def
isXsdNillable
(
r
:
Option
[
String
])
=
r
match
{
case
Some
(
XSD_NILBLE
)
=>
true
case
_
=>
false
def
functionType
:
Parser
[
FunctionType
]
=
VOID
^^^
VoidType
()
|
fieldType
def
xception
:
Parser
[
ExceptionDef
]
=
EXCEPTION
~
ident
~
LBRACKET
~
field
.*
~
RBRACKET
~
typeAnnotations
.?
^^
{
case
s
~
i
~
lb
~
fs
~
rb
~
tA
=>
ExceptionDef
(
i
,
fs
.
toList
,
tA
)
}
def
union
:
Parser
[
UnionDef
]
=
UNION
~
ident
~
XSD_ALL
.?
~
LBRACKET
~
field
.*
~
RBRACKET
~
typeAnnotations
.?
^^
{
case
s
~
i
~
xA
~
lb
~
fs
~
rb
~
tA
=>
UnionDef
(
i
,
isXsdAll
(
xA
),
fs
.
toList
,
tA
)
}
def
struct
:
Parser
[
StructDef
]
=
STRUCT
~
ident
~
XSD_ALL
.?
~
LBRACKET
~
field
.*
~
RBRACKET
~
typeAnnotations
.?
^^
{
case
s
~
i
~
xA
~
lb
~
fs
~
rb
~
tA
=>
StructDef
(
i
,
isXsdAll
(
xA
),
fs
.
toList
,
tA
)
}
def
field
=
fieldIdentifier
.?
~
fieldRequiredness
.?
~
fieldType
~
ident
~
fieldValue
.?
~
XSD_OPT
.?
~
XSD_NILBLE
.?
~
xsdAttributes
.?
~
typeAnnotations
.?
^^
{
case
fi
~
fr
~
ft
~
id
~
fv
~
xo
~
xn
~
xa
~
tA
=>
FieldDef
(
def
field
:
Parser
[
FieldDef
]
=
fieldIdentifier
.?
~
fieldRequiredness
.?
~
fieldType
~
ident
~
fieldValue
.?
~
XSD_OPT
.?
~
XSD_NILBLE
.?
~
xsdAttributes
.?
~
typeAnnotations
.?
~
commaOrSemicolon
.?
^^
{
case
fi
~
fr
~
ft
~
id
~
fv
~
xo
~
xn
~
xa
~
tA
~
cS
=>
FieldDef
(
fi
,
isRequired
(
fr
),
ft
,
...
...
@@ -389,7 +526,7 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
case
x
~
l
~
f
~
r
=>
XsdAttributes
(
f
)
}
def
fieldValue
=
COLON
~>
constValue
def
fieldValue
=
EQ
~>
constValue
def
fieldRequiredness
:
Parser
[
String
]
=
REQUIRED
|
OPTIONAL
...
...
@@ -397,6 +534,10 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
case
n
=>
IntConstant
(
n
.
toInt
)
}
def
const
:
Parser
[
ConstDef
]
=
CONST
~
fieldType
~
ident
~
EQ
~
constValue
~
commaOrSemicolon
.?
^^
{
case
c
~
fT
~
i
~
e
~
cV
~
cS
=>
ConstDef
(
fT
,
i
,
cV
)
}
def
parseDouble
(
s
:
String
)
=
try
{
Some
(
s
.
toDouble
)
}
catch
{
case
_
:
Throwable
=>
None
}
def
constValue
:
Parser
[
ConstValue
]
=
numericLit
^^
{
...
...
@@ -422,47 +563,6 @@ class ThriftParser extends StandardTokenParsers with PackratParsers {
def
constMap
=
LBRACKET
~
constValuePair
.*
~
RBRACKET
^^
{
case
l
~
ps
~
r
=>
ConstantMap
(
ps
)
}
def
containterType
:
Parser
[
ContainerType
]
=
mapType
|
setType
|
listType
def
setType
=
SET
~
cppType
.?
~
LT
~
fieldType
~
GT
~
typeAnnotations
.?
^^
{
case
s
~
ct
~
lt
~
t
~
gt
~
tA
=>
SetType
(
t
,
ct
,
tA
)
}
def
listType
=
LIST
~
LT
~
fieldType
~
GT
~
cppType
.?
~
typeAnnotations
.?
^^
{
case
l
~
lt
~
t
~
gt
~
ct
~
tA
=>
ListType
(
t
,
ct
,
tA
)
}
def
mapType
=
MAP
~
cppType
.?
~
LT
~
fieldType
~
COMMA
~
fieldType
~
GT
~
typeAnnotations
.?
^^
{
case
s
~
ct
~
lt
~
kt
~
c
~
vt
~
gt
~
tA
=>
MapType
(
kt
,
vt
,
ct
,
tA
)
}
def
cppType
:
Parser
[
CPPType
]
=
CPP_TYPE
~
stringLit
^^
{
case
c
~
s
=>
CPPType
(
s
)}
def
fieldType
:
Parser
[
FieldType
]
=
ident
^^
{
case
i
=>
IdentifierType
(
i
)}
|
baseType
|
containterType
def
baseType
:
Parser
[
BaseType
]
=
simpleBaseType
~
typeAnnotations
.?
^^
{
case
s
~
t
=>
BaseType
(
s
,
t
)}
def
simpleBaseType
:
Parser
[
BASE_TYPES.Value
]
=
STRING
^^^
BASE_TYPES
.
STRING
|
BINARY
^^^
BASE_TYPES
.
BINARY
|
SLIST
^^^
BASE_TYPES
.
SLIST
|
BOOL
^^^
BASE_TYPES
.
BOOLEAN
|
BYTE
^^^
BASE_TYPES
.
BYTE
|
I16
^^^
BASE_TYPES
.
I16
|
I32
^^^
BASE_TYPES
.
I32
|
I64
^^^
BASE_TYPES
.
I64
|
DOUBLE
^^^
BASE_TYPES
.
DOUBLE
def
typeAnnotations
:
Parser
[
List
[
TypeAnnotation
]]
=
LPAREN
~
typeAnnotation
.*
~
RPAREN
^^
{
case
l
~
t
~
r
=>
t
.
toList
}
def
typeAnnotation
:
Parser
[
TypeAnnotation
]
=
(
ident
~
EQ
~
stringLit
~
commaOrSemicolon
.?)
^^
{
case
i
~
e
~
s
~
c
=>
TypeAnnotation
(
i
,
s
)}
def
commaOrSemicolon
=
COMMA
|
SEMICOLON
}
class
ThriftLexer
(
val
keywords
:
Seq
[
String
],
val
delims
:
Seq
[
String
])
extends
StdLexical
with
ImplicitConversions
{
...
...
@@ -480,12 +580,12 @@ class ThriftLexer(val keywords: Seq[String], val delims : Seq[String]) extends S
delimiters
++=
delims
override
lazy
val
token
:
Parser
[
Token
]
=
(
identifier
^^
processIdent
|
st_identifier
^^
StIdentifier
|
string
^^
StringLit
(
intConstant
^^
NumericLit
|
hexConstant
^^
HexConstant
|
dubConstant
^^
NumericLit
|
intConstant
^^
NumericLit
|
identifier
^^
processIdent
|
st_identifier
^^
StIdentifier
|
string
^^
StringLit
|
EofCh
^^^
EOF
|
'\''
~>
failure
(
"unclosed string literal"
)
|
'"'
~>
failure
(
"unclosed string literal"
)
...
...
@@ -510,6 +610,11 @@ class ThriftLexer(val keywords: Seq[String], val delims : Seq[String]) extends S
|
'/'
~
'*'
~
failure
(
"unclosed comment"
)
).*
protected
override
def
comment
:
Parser
[
Any
]
=
(
commentChar
.*
~
'*'
~
'/'
)
protected
def
commentChar
=
chrExcept
(
EofCh
,
'*'
)
|
'*'
~
not
(
'/'
)
def
string
=
'\"'
~>
chrExcept
(
'\"'
,
'\n'
,
EofCh
).*
<~
'\"'
^^
{
_
mkString
""
}
|
'\''
~>
chrExcept
(
'\''
,
'\n'
,
EofCh
).*
<~
'\''
^^
{
_
mkString
""
}
...
...
@@ -520,8 +625,8 @@ class ThriftLexer(val keywords: Seq[String], val delims : Seq[String]) extends S
def
exponent
=
elem
(
"exponent character"
,
d
=>
d
==
'e'
||
d
==
'E'
)
def
intConstant
=
zero
|
intList
def
intList
=
nonzero
~
rep
(
digit
)
^^
{
case
x
~
y
=>
(
x
::
y
)
mkString
""
}
def
intConstant
=
opt
(
sign
)
~>
zero
|
intList
def
intList
=
opt
(
sign
)
~
nonzero
~
rep
(
digit
)
^^
{
case
s
~
x
~
y
=>
(
optString
(
""
,
s
)
::
x
::
y
)
mkString
""
}
def
fracPart
=
'.'
~>
rep
(
digit
)
^^
{
"."
+
_
mkString
""
}
def
expPart
=
exponent
~
opt
(
sign
)
~
rep1
(
digit
)
^^
{
case
e
~
s
~
d
=>
e
.
toString
+
optString
(
""
,
s
)
+
d
.
mkString
(
""
)
...
...
typesystem/src/
main
/resources/test.thrift
→
typesystem/src/
test
/resources/test.thrift
View file @
b8eecb20
File moved
typesystem/src/test/scala/org/apache/hadoop/metadata/tools/thrift/ThriftLexerTest.scala
View file @
b8eecb20
...
...
@@ -73,6 +73,34 @@ class ThriftLexerTest {
}
@Test
def
testNegativeInt
{
val
p
=
new
ThriftParser
val
r
=
scan
(
p
,
"""-1"""
)
Assert
.
assertTrue
(
r
.
successful
)
}
@Test
def
testComment
{
val
p
=
new
ThriftParser
val
r
=
scan
(
p
,
"""/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/"""
)
}
@Test
def
testService
{
val
p
=
new
ThriftParser
val
r
=
scan
(
p
,
"""/**
...
...
typesystem/src/test/scala/org/apache/hadoop/metadata/tools/thrift/ThriftParserTest.scala
View file @
b8eecb20
...
...
@@ -3,6 +3,8 @@ package org.apache.hadoop.metadata.tools.thrift
import
org.junit.Test
import
org.junit.Assert
import
scala.io.Source
class
ThriftParserTest
{
@Test
def
testSimple
{
...
...
@@ -18,4 +20,450 @@ class ThriftParserTest {
Assert
.
assertEquals
(
td
.
get
.
toString
,
"""ThriftDef(List(IncludeDef(share/fb303/if/fb303.thrift)),List(),List(NamespaceDef(,cpp,Some(Apache.Hadoop.Hive)), NamespaceDef(,php,Some(metastore)), NamespaceDef(,java,Some(org.apache.hadoop.hive.metastore.api))),List(),List(),List(),List(),List(),List(),List(),List())"""
)
}
@Test
def
testStruct
{
val
p
=
new
ThriftParser
var
td
:
Option
[
ThriftDef
]
=
p
(
"""struct PartitionSpecWithSharedSD {
1: list<PartitionWithoutSD> partitions,
2: StorageDescriptor sd
}"""
)
Assert
.
assertEquals
(
td
.
get
.
toString
,
"""ThriftDef(List(),List(),List(),List(),List(),List(),List(),List(StructDef(PartitionSpecWithSharedSD,false,List(FieldDef(Some(IntConstant(1)),false,ListType(IdentifierType(PartitionWithoutSD),None,None),partitions,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(StorageDescriptor),sd,None,false,false,None,None)),None)),List(),List(),List())"""
)
}
@Test
def
testTableStruct
{
val
p
=
new
ThriftParser
var
td
:
Option
[
ThriftDef
]
=
p
(
"""// table information
struct Table {
1: string tableName, // name of the table
2: string dbName, // database name ('default')
3: string owner, // owner of this table
4: i32 createTime, // creation time of the table
5: i32 lastAccessTime, // last access time (usually this will be filled from HDFS and shouldn't be relied on)
6: i32 retention, // retention time
7: StorageDescriptor sd, // storage descriptor of the table
8: list<FieldSchema> partitionKeys, // partition keys of the table. only primitive types are supported
9: map<string, string> parameters, // to store comments or any other user level parameters
10: string viewOriginalText, // original view text, null for non-view
11: string viewExpandedText, // expanded view text, null for non-view
12: string tableType, // table type enum, e.g. EXTERNAL_TABLE
13: optional PrincipalPrivilegeSet privileges,
14: optional bool temporary=false
}"""
)
Assert
.
assertEquals
(
td
.
get
.
toString
,
"""ThriftDef(List(),List(),List(),List(),List(),List(),List(),List(StructDef(Table,false,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),tableName,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),dbName,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),owner,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(i32,None),createTime,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,BaseType(i32,None),lastAccessTime,None,false,false,None,None), FieldDef(Some(IntConstant(6)),false,BaseType(i32,None),retention,None,false,false,None,None), FieldDef(Some(IntConstant(7)),false,IdentifierType(StorageDescriptor),sd,None,false,false,None,None), FieldDef(Some(IntConstant(8)),false,ListType(IdentifierType(FieldSchema),None,None),partitionKeys,None,false,false,None,None), FieldDef(Some(IntConstant(9)),false,MapType(BaseType(string,None),BaseType(string,None),None,None),parameters,None,false,false,None,None), FieldDef(Some(IntConstant(10)),false,BaseType(string,None),viewOriginalText,None,false,false,None,None), FieldDef(Some(IntConstant(11)),false,BaseType(string,None),viewExpandedText,None,false,false,None,None), FieldDef(Some(IntConstant(12)),false,BaseType(string,None),tableType,None,false,false,None,None), FieldDef(Some(IntConstant(13)),false,IdentifierType(PrincipalPrivilegeSet),privileges,None,false,false,None,None), FieldDef(Some(IntConstant(14)),false,BaseType(bool,None),temporary,Some(IdConstant(false)),false,false,None,None)),None)),List(),List(),List())"""
)
}
@Test
def
testHiveThrift
{
val
p
=
new
ThriftParser
val
is
=
getClass
().
getResourceAsStream
(
"/test.thrift"
)
val
src
:
Source
=
Source
.
fromInputStream
(
is
)
val
t
:
String
=
src
.
getLines
().
mkString
(
"\n"
)
var
td
:
Option
[
ThriftDef
]
=
p
(
t
)
Assert
.
assertTrue
(
td
.
isDefined
)
}
@Test
def
testService
{
val
p
=
new
ThriftParser
var
td
:
Option
[
ThriftDef
]
=
p
(
"""/**
* This interface is live.
*/
service ThriftHiveMetastore extends fb303.FacebookService
{
string getMetaConf(1:string key) throws(1:MetaException o1)
void setMetaConf(1:string key, 2:string value) throws(1:MetaException o1)
void create_database(1:Database database) throws(1:AlreadyExistsException o1, 2:InvalidObjectException o2, 3:MetaException o3)
Database get_database(1:string name) throws(1:NoSuchObjectException o1, 2:MetaException o2)
void drop_database(1:string name, 2:bool deleteData, 3:bool cascade) throws(1:NoSuchObjectException o1, 2:InvalidOperationException o2, 3:MetaException o3)
list<string> get_databases(1:string pattern) throws(1:MetaException o1)
list<string> get_all_databases() throws(1:MetaException o1)
void alter_database(1:string dbname, 2:Database db) throws(1:MetaException o1, 2:NoSuchObjectException o2)
// returns the type with given name (make seperate calls for the dependent types if needed)
Type get_type(1:string name) throws(1:MetaException o1, 2:NoSuchObjectException o2)
bool create_type(1:Type type) throws(1:AlreadyExistsException o1, 2:InvalidObjectException o2, 3:MetaException o3)
bool drop_type(1:string type) throws(1:MetaException o1, 2:NoSuchObjectException o2)
map<string, Type> get_type_all(1:string name)
throws(1:MetaException o2)
// Gets a list of FieldSchemas describing the columns of a particular table
list<FieldSchema> get_fields(1: string db_name, 2: string table_name) throws (1: MetaException o1, 2: UnknownTableException o2, 3: UnknownDBException o3),
// Gets a list of FieldSchemas describing both the columns and the partition keys of a particular table
list<FieldSchema> get_schema(1: string db_name, 2: string table_name) throws (1: MetaException o1, 2: UnknownTableException o2, 3: UnknownDBException o3)
// create a Hive table. Following fields must be set
// tableName
// database (only 'default' for now until Hive QL supports databases)
// owner (not needed, but good to have for tracking purposes)
// sd.cols (list of field schemas)
// sd.inputFormat (SequenceFileInputFormat (binary like falcon tables or u_full) or TextInputFormat)
// sd.outputFormat (SequenceFileInputFormat (binary) or TextInputFormat)
// sd.serdeInfo.serializationLib (SerDe class name eg org.apache.hadoop.hive.serde.simple_meta.MetadataTypedColumnsetSerDe
// * See notes on DDL_TIME
void create_table(1:Table tbl) throws(1:AlreadyExistsException o1, 2:InvalidObjectException o2, 3:MetaException o3, 4:NoSuchObjectException o4)
void create_table_with_environment_context(1:Table tbl,
2:EnvironmentContext environment_context)
throws (1:AlreadyExistsException o1,
2:InvalidObjectException o2, 3:MetaException o3,
4:NoSuchObjectException o4)
// drops the table and all the partitions associated with it if the table has partitions
// delete data (including partitions) if deleteData is set to true
void drop_table(1:string dbname, 2:string name, 3:bool deleteData)
throws(1:NoSuchObjectException o1, 2:MetaException o3)
void drop_table_with_environment_context(1:string dbname, 2:string name, 3:bool deleteData,
4:EnvironmentContext environment_context)
throws(1:NoSuchObjectException o1, 2:MetaException o3)
list<string> get_tables(1: string db_name, 2: string pattern) throws (1: MetaException o1)
list<string> get_all_tables(1: string db_name) throws (1: MetaException o1)
Table get_table(1:string dbname, 2:string tbl_name)
throws (1:MetaException o1, 2:NoSuchObjectException o2)
list<Table> get_table_objects_by_name(1:string dbname, 2:list<string> tbl_names)
throws (1:MetaException o1, 2:InvalidOperationException o2, 3:UnknownDBException o3)
// Get a list of table names that match a filter.
// The filter operators are LIKE, <, <=, >, >=, =, <>
//
// In the filter statement, values interpreted as strings must be enclosed in quotes,
// while values interpreted as integers should not be. Strings and integers are the only
// supported value types.
//
// The currently supported key names in the filter are:
// Constants.HIVE_FILTER_FIELD_OWNER, which filters on the tables' owner's name
// and supports all filter operators
// Constants.HIVE_FILTER_FIELD_LAST_ACCESS, which filters on the last access times
// and supports all filter operators except LIKE
// Constants.HIVE_FILTER_FIELD_PARAMS, which filters on the tables' parameter keys and values
// and only supports the filter operators = and <>.
// Append the parameter key name to HIVE_FILTER_FIELD_PARAMS in the filter statement.
// For example, to filter on parameter keys called "retention", the key name in the filter
// statement should be Constants.HIVE_FILTER_FIELD_PARAMS + "retention"
// Also, = and <> only work for keys that exist
// in the tables. E.g., if you are looking for tables where key1 <> value, it will only
// look at tables that have a value for the parameter key1.
// Some example filter statements include:
// filter = Constants.HIVE_FILTER_FIELD_OWNER + " like \".*test.*\" and " +
// Constants.HIVE_FILTER_FIELD_LAST_ACCESS + " = 0";
// filter = Constants.HIVE_FILTER_FIELD_PARAMS + "retention = \"30\" or " +
// Constants.HIVE_FILTER_FIELD_PARAMS + "retention = \"90\""
// @param dbName
// The name of the database from which you will retrieve the table names
// @param filterType
// The type of filter
// @param filter
// The filter string
// @param max_tables
// The maximum number of tables returned
// @return A list of table names that match the desired filter
list<string> get_table_names_by_filter(1:string dbname, 2:string filter, 3:i16 max_tables=-1)
throws (1:MetaException o1, 2:InvalidOperationException o2, 3:UnknownDBException o3)
// alter table applies to only future partitions not for existing partitions
// * See notes on DDL_TIME
void alter_table(1:string dbname, 2:string tbl_name, 3:Table new_tbl)
throws (1:InvalidOperationException o1, 2:MetaException o2)
void alter_table_with_environment_context(1:string dbname, 2:string tbl_name,
3:Table new_tbl, 4:EnvironmentContext environment_context)
throws (1:InvalidOperationException o1, 2:MetaException o2)
// the following applies to only tables that have partitions
// * See notes on DDL_TIME
Partition add_partition(1:Partition new_part)
throws(1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
Partition add_partition_with_environment_context(1:Partition new_part,
2:EnvironmentContext environment_context)
throws (1:InvalidObjectException o1, 2:AlreadyExistsException o2,
3:MetaException o3)
i32 add_partitions(1:list<Partition> new_parts)
throws(1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
i32 add_partitions_pspec(1:list<PartitionSpec> new_parts)
throws(1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
Partition append_partition(1:string db_name, 2:string tbl_name, 3:list<string> part_vals)
throws (1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
AddPartitionsResult add_partitions_req(1:AddPartitionsRequest request)
throws(1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
Partition append_partition_with_environment_context(1:string db_name, 2:string tbl_name,
3:list<string> part_vals, 4:EnvironmentContext environment_context)
throws (1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
Partition append_partition_by_name(1:string db_name, 2:string tbl_name, 3:string part_name)
throws (1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
Partition append_partition_by_name_with_environment_context(1:string db_name, 2:string tbl_name,
3:string part_name, 4:EnvironmentContext environment_context)
throws (1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
bool drop_partition(1:string db_name, 2:string tbl_name, 3:list<string> part_vals, 4:bool deleteData)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
bool drop_partition_with_environment_context(1:string db_name, 2:string tbl_name,
3:list<string> part_vals, 4:bool deleteData, 5:EnvironmentContext environment_context)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
bool drop_partition_by_name(1:string db_name, 2:string tbl_name, 3:string part_name, 4:bool deleteData)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
bool drop_partition_by_name_with_environment_context(1:string db_name, 2:string tbl_name,
3:string part_name, 4:bool deleteData, 5:EnvironmentContext environment_context)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
DropPartitionsResult drop_partitions_req(1: DropPartitionsRequest req)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
Partition get_partition(1:string db_name, 2:string tbl_name, 3:list<string> part_vals)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
Partition exchange_partition(1:map<string, string> partitionSpecs, 2:string source_db,
3:string source_table_name, 4:string dest_db, 5:string dest_table_name)
throws(1:MetaException o1, 2:NoSuchObjectException o2, 3:InvalidObjectException o3,
4:InvalidInputException o4)
Partition get_partition_with_auth(1:string db_name, 2:string tbl_name, 3:list<string> part_vals,
4: string user_name, 5: list<string> group_names) throws(1:MetaException o1, 2:NoSuchObjectException o2)
Partition get_partition_by_name(1:string db_name 2:string tbl_name, 3:string part_name)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
// returns all the partitions for this table in reverse chronological order.
// If max parts is given then it will return only that many.
list<Partition> get_partitions(1:string db_name, 2:string tbl_name, 3:i16 max_parts=-1)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
list<Partition> get_partitions_with_auth(1:string db_name, 2:string tbl_name, 3:i16 max_parts=-1,
4: string user_name, 5: list<string> group_names) throws(1:NoSuchObjectException o1, 2:MetaException o2)
list<PartitionSpec> get_partitions_pspec(1:string db_name, 2:string tbl_name, 3:i32 max_parts=-1)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
list<string> get_partition_names(1:string db_name, 2:string tbl_name, 3:i16 max_parts=-1)
throws(1:MetaException o2)
// get_partition*_ps methods allow filtering by a partial partition specification,
// as needed for dynamic partitions. The values that are not restricted should
// be empty strings. Nulls were considered (instead of "") but caused errors in
// generated Python code. The size of part_vals may be smaller than the
// number of partition columns - the unspecified values are considered the same
// as "".
list<Partition> get_partitions_ps(1:string db_name 2:string tbl_name
3:list<string> part_vals, 4:i16 max_parts=-1)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
list<Partition> get_partitions_ps_with_auth(1:string db_name, 2:string tbl_name, 3:list<string> part_vals, 4:i16 max_parts=-1,
5: string user_name, 6: list<string> group_names) throws(1:NoSuchObjectException o1, 2:MetaException o2)
list<string> get_partition_names_ps(1:string db_name,
2:string tbl_name, 3:list<string> part_vals, 4:i16 max_parts=-1)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
// get the partitions matching the given partition filter
list<Partition> get_partitions_by_filter(1:string db_name 2:string tbl_name
3:string filter, 4:i16 max_parts=-1)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
// List partitions as PartitionSpec instances.
list<PartitionSpec> get_part_specs_by_filter(1:string db_name 2:string tbl_name
3:string filter, 4:i32 max_parts=-1)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
// get the partitions matching the given partition filter
// unlike get_partitions_by_filter, takes serialized hive expression, and with that can work
// with any filter (get_partitions_by_filter only works if the filter can be pushed down to JDOQL.
PartitionsByExprResult get_partitions_by_expr(1:PartitionsByExprRequest req)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
// get partitions give a list of partition names
list<Partition> get_partitions_by_names(1:string db_name 2:string tbl_name 3:list<string> names)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
// changes the partition to the new partition object. partition is identified from the part values
// in the new_part
// * See notes on DDL_TIME
void alter_partition(1:string db_name, 2:string tbl_name, 3:Partition new_part)
throws (1:InvalidOperationException o1, 2:MetaException o2)
// change a list of partitions. All partitions are altered atomically and all
// prehooks are fired together followed by all post hooks
void alter_partitions(1:string db_name, 2:string tbl_name, 3:list<Partition> new_parts)
throws (1:InvalidOperationException o1, 2:MetaException o2)
void alter_partition_with_environment_context(1:string db_name,
2:string tbl_name, 3:Partition new_part,
4:EnvironmentContext environment_context)
throws (1:InvalidOperationException o1, 2:MetaException o2)
// rename the old partition to the new partition object by changing old part values to the part values
// in the new_part. old partition is identified from part_vals.
// partition keys in new_part should be the same as those in old partition.
void rename_partition(1:string db_name, 2:string tbl_name, 3:list<string> part_vals, 4:Partition new_part)
throws (1:InvalidOperationException o1, 2:MetaException o2)
// returns whether or not the partition name is valid based on the value of the config
// hive.metastore.partition.name.whitelist.pattern
bool partition_name_has_valid_characters(1:list<string> part_vals, 2:bool throw_exception)
throws(1: MetaException o1)
// gets the value of the configuration key in the metastore server. returns
// defaultValue if the key does not exist. if the configuration key does not
// begin with "hive", "mapred", or "hdfs", a ConfigValSecurityException is
// thrown.
string get_config_value(1:string name, 2:string defaultValue)
throws(1:ConfigValSecurityException o1)
// converts a partition name into a partition values array
list<string> partition_name_to_vals(1: string part_name)
throws(1: MetaException o1)
// converts a partition name into a partition specification (a mapping from
// the partition cols to the values)
map<string, string> partition_name_to_spec(1: string part_name)
throws(1: MetaException o1)
void markPartitionForEvent(1:string db_name, 2:string tbl_name, 3:map<string,string> part_vals,
4:PartitionEventType eventType) throws (1: MetaException o1, 2: NoSuchObjectException o2,
3: UnknownDBException o3, 4: UnknownTableException o4, 5: UnknownPartitionException o5,
6: InvalidPartitionException o6)
bool isPartitionMarkedForEvent(1:string db_name, 2:string tbl_name, 3:map<string,string> part_vals,
4: PartitionEventType eventType) throws (1: MetaException o1, 2:NoSuchObjectException o2,
3: UnknownDBException o3, 4: UnknownTableException o4, 5: UnknownPartitionException o5,
6: InvalidPartitionException o6)
//index
Index add_index(1:Index new_index, 2: Table index_table)
throws(1:InvalidObjectException o1, 2:AlreadyExistsException o2, 3:MetaException o3)
void alter_index(1:string dbname, 2:string base_tbl_name, 3:string idx_name, 4:Index new_idx)
throws (1:InvalidOperationException o1, 2:MetaException o2)
bool drop_index_by_name(1:string db_name, 2:string tbl_name, 3:string index_name, 4:bool deleteData)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
Index get_index_by_name(1:string db_name 2:string tbl_name, 3:string index_name)
throws(1:MetaException o1, 2:NoSuchObjectException o2)
list<Index> get_indexes(1:string db_name, 2:string tbl_name, 3:i16 max_indexes=-1)
throws(1:NoSuchObjectException o1, 2:MetaException o2)
list<string> get_index_names(1:string db_name, 2:string tbl_name, 3:i16 max_indexes=-1)
throws(1:MetaException o2)
// column statistics interfaces
// update APIs persist the column statistics object(s) that are passed in. If statistics already
// exists for one or more columns, the existing statistics will be overwritten. The update APIs
// validate that the dbName, tableName, partName, colName[] passed in as part of the ColumnStatistics
// struct are valid, throws InvalidInputException/NoSuchObjectException if found to be invalid
bool update_table_column_statistics(1:ColumnStatistics stats_obj) throws (1:NoSuchObjectException o1,
2:InvalidObjectException o2, 3:MetaException o3, 4:InvalidInputException o4)
bool update_partition_column_statistics(1:ColumnStatistics stats_obj) throws (1:NoSuchObjectException o1,
2:InvalidObjectException o2, 3:MetaException o3, 4:InvalidInputException o4)
// get APIs return the column statistics corresponding to db_name, tbl_name, [part_name], col_name if
// such statistics exists. If the required statistics doesn't exist, get APIs throw NoSuchObjectException
// For instance, if get_table_column_statistics is called on a partitioned table for which only
// partition level column stats exist, get_table_column_statistics will throw NoSuchObjectException
ColumnStatistics get_table_column_statistics(1:string db_name, 2:string tbl_name, 3:string col_name) throws
(1:NoSuchObjectException o1, 2:MetaException o2, 3:InvalidInputException o3, 4:InvalidObjectException o4)
ColumnStatistics get_partition_column_statistics(1:string db_name, 2:string tbl_name, 3:string part_name,
4:string col_name) throws (1:NoSuchObjectException o1, 2:MetaException o2,
3:InvalidInputException o3, 4:InvalidObjectException o4)
TableStatsResult get_table_statistics_req(1:TableStatsRequest request) throws
(1:NoSuchObjectException o1, 2:MetaException o2)
PartitionsStatsResult get_partitions_statistics_req(1:PartitionsStatsRequest request) throws
(1:NoSuchObjectException o1, 2:MetaException o2)
AggrStats get_aggr_stats_for(1:PartitionsStatsRequest request) throws
(1:NoSuchObjectException o1, 2:MetaException o2)
bool set_aggr_stats_for(1:SetPartitionsStatsRequest request) throws
(1:NoSuchObjectException o1, 2:InvalidObjectException o2, 3:MetaException o3, 4:InvalidInputException o4)
// delete APIs attempt to delete column statistics, if found, associated with a given db_name, tbl_name, [part_name]
// and col_name. If the delete API doesn't find the statistics record in the metastore, throws NoSuchObjectException
// Delete API validates the input and if the input is invalid throws InvalidInputException/InvalidObjectException.
bool delete_partition_column_statistics(1:string db_name, 2:string tbl_name, 3:string part_name, 4:string col_name) throws
(1:NoSuchObjectException o1, 2:MetaException o2, 3:InvalidObjectException o3,
4:InvalidInputException o4)
bool delete_table_column_statistics(1:string db_name, 2:string tbl_name, 3:string col_name) throws
(1:NoSuchObjectException o1, 2:MetaException o2, 3:InvalidObjectException o3,
4:InvalidInputException o4)
//
// user-defined functions
//
void create_function(1:Function func)
throws (1:AlreadyExistsException o1,
2:InvalidObjectException o2,
3:MetaException o3,
4:NoSuchObjectException o4)
void drop_function(1:string dbName, 2:string funcName)
throws (1:NoSuchObjectException o1, 2:MetaException o3)
void alter_function(1:string dbName, 2:string funcName, 3:Function newFunc)
throws (1:InvalidOperationException o1, 2:MetaException o2)
list<string> get_functions(1:string dbName, 2:string pattern)
throws (1:MetaException o1)
Function get_function(1:string dbName, 2:string funcName)
throws (1:MetaException o1, 2:NoSuchObjectException o2)
//authorization privileges
bool create_role(1:Role role) throws(1:MetaException o1)
bool drop_role(1:string role_name) throws(1:MetaException o1)
list<string> get_role_names() throws(1:MetaException o1)
// Deprecated, use grant_revoke_role()
bool grant_role(1:string role_name, 2:string principal_name, 3:PrincipalType principal_type,
4:string grantor, 5:PrincipalType grantorType, 6:bool grant_option) throws(1:MetaException o1)
// Deprecated, use grant_revoke_role()
bool revoke_role(1:string role_name, 2:string principal_name, 3:PrincipalType principal_type)
throws(1:MetaException o1)
list<Role> list_roles(1:string principal_name, 2:PrincipalType principal_type) throws(1:MetaException o1)
GrantRevokeRoleResponse grant_revoke_role(1:GrantRevokeRoleRequest request) throws(1:MetaException o1)
// get all role-grants for users/roles that have been granted the given role
// Note that in the returned list of RolePrincipalGrants, the roleName is
// redundant as it would match the role_name argument of this function
GetPrincipalsInRoleResponse get_principals_in_role(1: GetPrincipalsInRoleRequest request) throws(1:MetaException o1)
// get grant information of all roles granted to the given principal
// Note that in the returned list of RolePrincipalGrants, the principal name,type is
// redundant as it would match the principal name,type arguments of this function
GetRoleGrantsForPrincipalResponse get_role_grants_for_principal(1: GetRoleGrantsForPrincipalRequest request) throws(1:MetaException o1)
PrincipalPrivilegeSet get_privilege_set(1:HiveObjectRef hiveObject, 2:string user_name,
3: list<string> group_names) throws(1:MetaException o1)
list<HiveObjectPrivilege> list_privileges(1:string principal_name, 2:PrincipalType principal_type,
3: HiveObjectRef hiveObject) throws(1:MetaException o1)
// Deprecated, use grant_revoke_privileges()
bool grant_privileges(1:PrivilegeBag privileges) throws(1:MetaException o1)
// Deprecated, use grant_revoke_privileges()
bool revoke_privileges(1:PrivilegeBag privileges) throws(1:MetaException o1)
GrantRevokePrivilegeResponse grant_revoke_privileges(1:GrantRevokePrivilegeRequest request) throws(1:MetaException o1);
// this is used by metastore client to send UGI information to metastore server immediately
// after setting up a connection.
list<string> set_ugi(1:string user_name, 2:list<string> group_names) throws (1:MetaException o1)
//Authentication (delegation token) interfaces
// get metastore server delegation token for use from the map/reduce tasks to authenticate
// to metastore server
string get_delegation_token(1:string token_owner, 2:string renewer_kerberos_principal_name)
throws (1:MetaException o1)
// method to renew delegation token obtained from metastore server
i64 renew_delegation_token(1:string token_str_form) throws (1:MetaException o1)
// method to cancel delegation token obtained from metastore server
void cancel_delegation_token(1:string token_str_form) throws (1:MetaException o1)
// Transaction and lock management calls
// Get just list of open transactions
GetOpenTxnsResponse get_open_txns()
// Get list of open transactions with state (open, aborted)
GetOpenTxnsInfoResponse get_open_txns_info()
OpenTxnsResponse open_txns(1:OpenTxnRequest rqst)
void abort_txn(1:AbortTxnRequest rqst) throws (1:NoSuchTxnException o1)
void commit_txn(1:CommitTxnRequest rqst) throws (1:NoSuchTxnException o1, 2:TxnAbortedException o2)
LockResponse lock(1:LockRequest rqst) throws (1:NoSuchTxnException o1, 2:TxnAbortedException o2)
LockResponse check_lock(1:CheckLockRequest rqst)
throws (1:NoSuchTxnException o1, 2:TxnAbortedException o2, 3:NoSuchLockException o3)
void unlock(1:UnlockRequest rqst) throws (1:NoSuchLockException o1, 2:TxnOpenException o2)
ShowLocksResponse show_locks(1:ShowLocksRequest rqst)
void heartbeat(1:HeartbeatRequest ids) throws (1:NoSuchLockException o1, 2:NoSuchTxnException o2, 3:TxnAbortedException o3)
HeartbeatTxnRangeResponse heartbeat_txn_range(1:HeartbeatTxnRangeRequest txns)
void compact(1:CompactionRequest rqst)
ShowCompactResponse show_compact(1:ShowCompactRequest rqst)
}"""
)
Assert
.
assertEquals
(
td
.
get
.
toString
,
"""ThriftDef(List(),List(),List(),List(),List(),List(),List(),List(),List(),List(),List(ServiceDef(ThriftHiveMetastore,Some(fb303.FacebookService),List(FunctionDef(false,BaseType(string,None),getMetaConf,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),key,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,VoidType(),setMetaConf,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),key,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),value,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,VoidType(),create_database,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Database),database,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AlreadyExistsException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Database),get_database,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,VoidType(),drop_database,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(bool,None),deleteData,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(bool,None),cascade,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidOperationException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_databases,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),pattern,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_all_databases,List(),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_database,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(Database),db,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Type),get_type,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),create_type,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Type),type,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AlreadyExistsException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_type,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),type,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,MapType(BaseType(string,None),IdentifierType(Type),None,None),get_type_all,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(FieldSchema),None,None),get_fields,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),table_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(UnknownTableException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(UnknownDBException),o3,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(FieldSchema),None,None),get_schema,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),table_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(UnknownTableException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(UnknownDBException),o3,None,false,false,None,None))),None), FunctionDef(false,VoidType(),create_table,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Table),tbl,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AlreadyExistsException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(NoSuchObjectException),o4,None,false,false,None,None))),None), FunctionDef(false,VoidType(),create_table_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Table),tbl,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AlreadyExistsException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(NoSuchObjectException),o4,None,false,false,None,None))),None), FunctionDef(false,VoidType(),drop_table,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(bool,None),deleteData,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,VoidType(),drop_table_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(bool,None),deleteData,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_tables,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),pattern,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_all_tables,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Table),get_table,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Table),None,None),get_table_objects_by_name,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,ListType(BaseType(string,None),None,None),tbl_names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidOperationException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(UnknownDBException),o3,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_table_names_by_filter,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),filter,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i16,None),max_tables,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidOperationException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(UnknownDBException),o3,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_table,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(Table),new_tbl,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_table_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(Table),new_tbl,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),add_partition,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Partition),new_part,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),add_partition_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Partition),new_part,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,BaseType(i32,None),add_partitions,List(FieldDef(Some(IntConstant(1)),false,ListType(IdentifierType(Partition),None,None),new_parts,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,BaseType(i32,None),add_partitions_pspec,List(FieldDef(Some(IntConstant(1)),false,ListType(IdentifierType(PartitionSpec),None,None),new_parts,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),append_partition,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(AddPartitionsResult),add_partitions_req,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AddPartitionsRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),append_partition_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),append_partition_by_name,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),append_partition_by_name_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_partition,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(bool,None),deleteData,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_partition_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(bool,None),deleteData,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_partition_by_name,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(bool,None),deleteData,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_partition_by_name_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(bool,None),deleteData,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(DropPartitionsResult),drop_partitions_req,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(DropPartitionsRequest),req,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),get_partition,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),exchange_partition,List(FieldDef(Some(IntConstant(1)),false,MapType(BaseType(string,None),BaseType(string,None),None,None),partitionSpecs,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),source_db,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),source_table_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(string,None),dest_db,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,BaseType(string,None),dest_table_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(InvalidObjectException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidInputException),o4,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),get_partition_with_auth,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(string,None),user_name,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,ListType(BaseType(string,None),None,None),group_names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Partition),get_partition_by_name,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Partition),None,None),get_partitions,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Partition),None,None),get_partitions_with_auth,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(string,None),user_name,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,ListType(BaseType(string,None),None,None),group_names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(PartitionSpec),None,None),get_partitions_pspec,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i32,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_partition_names,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Partition),None,None),get_partitions_ps,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Partition),None,None),get_partitions_ps_with_auth,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None), FieldDef(Some(IntConstant(5)),false,BaseType(string,None),user_name,None,false,false,None,None), FieldDef(Some(IntConstant(6)),false,ListType(BaseType(string,None),None,None),group_names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_partition_names_ps,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Partition),None,None),get_partitions_by_filter,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),filter,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(i16,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(PartitionSpec),None,None),get_part_specs_by_filter,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),filter,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(i32,None),max_parts,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(PartitionsByExprResult),get_partitions_by_expr,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(PartitionsByExprRequest),req,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Partition),None,None),get_partitions_by_names,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_partition,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(Partition),new_part,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_partitions,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(IdentifierType(Partition),None,None),new_parts,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_partition_with_environment_context,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(Partition),new_part,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(EnvironmentContext),environment_context,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,VoidType(),rename_partition,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(Partition),new_part,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),partition_name_has_valid_characters,List(FieldDef(Some(IntConstant(1)),false,ListType(BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(bool,None),throw_exception,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(string,None),get_config_value,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),defaultValue,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(ConfigValSecurityException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),partition_name_to_vals,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),part_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,MapType(BaseType(string,None),BaseType(string,None),None,None),partition_name_to_spec,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),part_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,VoidType(),markPartitionForEvent,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,MapType(BaseType(string,None),BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(PartitionEventType),eventType,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(UnknownDBException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(UnknownTableException),o4,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,IdentifierType(UnknownPartitionException),o5,None,false,false,None,None), FieldDef(Some(IntConstant(6)),false,IdentifierType(InvalidPartitionException),o6,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),isPartitionMarkedForEvent,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,MapType(BaseType(string,None),BaseType(string,None),None,None),part_vals,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(PartitionEventType),eventType,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(UnknownDBException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(UnknownTableException),o4,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,IdentifierType(UnknownPartitionException),o5,None,false,false,None,None), FieldDef(Some(IntConstant(6)),false,IdentifierType(InvalidPartitionException),o6,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Index),add_index,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Index),new_index,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(Table),index_table,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(AlreadyExistsException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_index,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbname,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),base_tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),idx_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(Index),new_idx,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_index_by_name,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),index_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(bool,None),deleteData,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Index),get_index_by_name,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),index_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Index),None,None),get_indexes,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i16,None),max_indexes,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_index_names,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(i16,None),max_indexes,Some(DoubleConstant(-1.0)),false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),update_table_column_statistics,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(ColumnStatistics),stats_obj,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidInputException),o4,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),update_partition_column_statistics,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(ColumnStatistics),stats_obj,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidInputException),o4,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(ColumnStatistics),get_table_column_statistics,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),col_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(InvalidInputException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidObjectException),o4,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(ColumnStatistics),get_partition_column_statistics,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(string,None),col_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(InvalidInputException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidObjectException),o4,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(TableStatsResult),get_table_statistics_req,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(TableStatsRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(PartitionsStatsResult),get_partitions_statistics_req,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(PartitionsStatsRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(AggrStats),get_aggr_stats_for,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(PartitionsStatsRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),set_aggr_stats_for,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(SetPartitionsStatsRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidInputException),o4,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),delete_partition_column_statistics,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),part_name,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(string,None),col_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(InvalidObjectException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidInputException),o4,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),delete_table_column_statistics,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),db_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),tbl_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,BaseType(string,None),col_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(InvalidObjectException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(InvalidInputException),o4,None,false,false,None,None))),None), FunctionDef(false,VoidType(),create_function,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Function),func,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AlreadyExistsException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(InvalidObjectException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(MetaException),o3,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,IdentifierType(NoSuchObjectException),o4,None,false,false,None,None))),None), FunctionDef(false,VoidType(),drop_function,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbName,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),funcName,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchObjectException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o3,None,false,false,None,None))),None), FunctionDef(false,VoidType(),alter_function,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbName,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),funcName,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(Function),newFunc,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(InvalidOperationException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(MetaException),o2,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_functions,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbName,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),pattern,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(Function),get_function,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),dbName,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),funcName,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchObjectException),o2,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),create_role,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(Role),role,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),drop_role,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),role_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),get_role_names,List(),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),grant_role,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),role_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),principal_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(PrincipalType),principal_type,None,false,false,None,None), FieldDef(Some(IntConstant(4)),false,BaseType(string,None),grantor,None,false,false,None,None), FieldDef(Some(IntConstant(5)),false,IdentifierType(PrincipalType),grantorType,None,false,false,None,None), FieldDef(Some(IntConstant(6)),false,BaseType(bool,None),grant_option,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),revoke_role,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),role_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),principal_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(PrincipalType),principal_type,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(Role),None,None),list_roles,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),principal_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(PrincipalType),principal_type,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(GrantRevokeRoleResponse),grant_revoke_role,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(GrantRevokeRoleRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(GetPrincipalsInRoleResponse),get_principals_in_role,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(GetPrincipalsInRoleRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(GetRoleGrantsForPrincipalResponse),get_role_grants_for_principal,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(GetRoleGrantsForPrincipalRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(PrincipalPrivilegeSet),get_privilege_set,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(HiveObjectRef),hiveObject,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),user_name,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,ListType(BaseType(string,None),None,None),group_names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(IdentifierType(HiveObjectPrivilege),None,None),list_privileges,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),principal_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(PrincipalType),principal_type,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(HiveObjectRef),hiveObject,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),grant_privileges,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(PrivilegeBag),privileges,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(bool,None),revoke_privileges,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(PrivilegeBag),privileges,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(GrantRevokePrivilegeResponse),grant_revoke_privileges,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(GrantRevokePrivilegeRequest),request,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,ListType(BaseType(string,None),None,None),set_ugi,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),user_name,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,ListType(BaseType(string,None),None,None),group_names,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(string,None),get_delegation_token,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),token_owner,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,BaseType(string,None),renewer_kerberos_principal_name,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,BaseType(i64,None),renew_delegation_token,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),token_str_form,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,VoidType(),cancel_delegation_token,List(FieldDef(Some(IntConstant(1)),false,BaseType(string,None),token_str_form,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(MetaException),o1,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(GetOpenTxnsResponse),get_open_txns,List(),None,None), FunctionDef(false,IdentifierType(GetOpenTxnsInfoResponse),get_open_txns_info,List(),None,None), FunctionDef(false,IdentifierType(OpenTxnsResponse),open_txns,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(OpenTxnRequest),rqst,None,false,false,None,None)),None,None), FunctionDef(false,VoidType(),abort_txn,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(AbortTxnRequest),rqst,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchTxnException),o1,None,false,false,None,None))),None), FunctionDef(false,VoidType(),commit_txn,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(CommitTxnRequest),rqst,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchTxnException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(TxnAbortedException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(LockResponse),lock,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(LockRequest),rqst,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchTxnException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(TxnAbortedException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(LockResponse),check_lock,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(CheckLockRequest),rqst,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchTxnException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(TxnAbortedException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(NoSuchLockException),o3,None,false,false,None,None))),None), FunctionDef(false,VoidType(),unlock,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(UnlockRequest),rqst,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchLockException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(TxnOpenException),o2,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(ShowLocksResponse),show_locks,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(ShowLocksRequest),rqst,None,false,false,None,None)),None,None), FunctionDef(false,VoidType(),heartbeat,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(HeartbeatRequest),ids,None,false,false,None,None)),Some(List(FieldDef(Some(IntConstant(1)),false,IdentifierType(NoSuchLockException),o1,None,false,false,None,None), FieldDef(Some(IntConstant(2)),false,IdentifierType(NoSuchTxnException),o2,None,false,false,None,None), FieldDef(Some(IntConstant(3)),false,IdentifierType(TxnAbortedException),o3,None,false,false,None,None))),None), FunctionDef(false,IdentifierType(HeartbeatTxnRangeResponse),heartbeat_txn_range,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(HeartbeatTxnRangeRequest),txns,None,false,false,None,None)),None,None), FunctionDef(false,VoidType(),compact,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(CompactionRequest),rqst,None,false,false,None,None)),None,None), FunctionDef(false,IdentifierType(ShowCompactResponse),show_compact,List(FieldDef(Some(IntConstant(1)),false,IdentifierType(ShowCompactRequest),rqst,None,false,false,None,None)),None,None)),None)))"""
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment