Commit 7f8d9f02 by Harish Butani

Query Parser initial checkin

parent fca624df
package org.apache.hadoop.metadata.query
import org.junit.{Assert, Test}
import scala.util.parsing.input.CharArrayReader
class LexerTest {
def scan(p : QueryParser, str : String) : p.lexical.ParseResult[_] = {
val l = p.lexical
var s: l.Input = new CharArrayReader(str.toCharArray)
var r = (l.whitespace.? ~ l.token)(s)
s = r.next
while (r.successful && !s.atEnd) {
s = r.next
if (!s.atEnd) {
r = (l.whitespace.? ~ l.token)(s)
}
}
r.asInstanceOf[p.lexical.ParseResult[_]]
}
@Test def testSimple {
val p = new QueryParser
val r = scan(p, """DB where db1.name""")
Assert.assertTrue(r.successful)
}
}
package org.apache.hadoop.metadata.query
import org.apache.hadoop.metadata.BaseTest
import org.apache.hadoop.metadata.query.Expressions._
import org.junit.{Test, Before}
class ParserTest extends BaseTest {
@Before
override def setup {
super.setup
QueryTestsUtils.setupTypes
}
@Test def testFrom: Unit = {
val p = new QueryParser
println(p("from DB").right.get.toString)
}
@Test def testFrom2: Unit = {
val p = new QueryParser
println(p("DB").right.get.toString)
}
@Test def testJoin1: Unit = {
val p = new QueryParser
println(p("DB, Table").right.get.toString)
}
@Test def testWhere1: Unit = {
val p = new QueryParser
println(p("DB as db1 Table where db1.name ").right.get.toString)
}
@Test def testWhere2: Unit = {
val p = new QueryParser
println(p("DB name = \"Reporting\"").right.get.toString)
}
@Test def test4 : Unit = {
val p = new QueryParser
println(p("DB where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1").right.get.toString)
}
@Test def testJoin2 : Unit = {
val p = new QueryParser
println(p("DB as db1 where (createTime + 1) > 0 and (db1.name = \"Reporting\") or DB has owner Table as tab " +
" select db1.name as dbName, tab.name as tabName").right.get.toString)
}
@Test def testLoop : Unit = {
val p = new QueryParser
println(p("Table loop (LoadProcess outputTable)").right.get.toString)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment