Skip to main content

Posts

Showing posts from July, 2017

Trino parser introduction

Trinoのパーサー部分では ANTLR が使われています。 ファイルは以下のパスにあります。パーサー系で追加したり修正する場合はまず SqlBase.g4 を参照することになるかと思います。 以下はCTAS文の抜粋です。例えば、SELECT文でカッコをつけても正常にパースしたい構文を追加する例をまずはあげてみます。  CREATE TABLE (IF NOT EXISTS)? qualifiedName    (COMMENT string)?    (WITH tableProperties)? AS query    (WITH (NO)? DATA)?                                             #createTableAsSelect 修正例はこんな感じになります。右側のカッコはエスケープするためにクォートで囲んでいます。 なんとなくイメージがつくと思いますが、|はORの役割を果たしているのでqueryもしくは(query)をこれは表しています。  CREATE TABLE (IF NOT EXISTS)? qualifiedName    (COMMENT string)?    (WITH tableProperties)? AS (query | '('query')')    (WITH (NO)? DATA)?                                             #createTableAsSelect SqlBase.g4を修正したtrino-par...