@Test
  public void testSelectJoinTS() throws ParseException {
    parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" join             \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
    parse("select \"c/b/o_t1\".key from \"c/b/o_t1\" join \"cbo_/t3////\"");
    parse("select \"c/b/o_t1\".key from \"c/b/o_t1\" join \"cbo_/t3////\" where \"c/b/o_t1\".key=\"cbo_/t3////\".key and \"c/b/o_t1\".key >= 1");
    parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" left outer join  \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
    parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" right outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
    parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" full outer join  \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
    parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
    parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
    parse("select a, \"c/b/o_t1\".b, key, \"//cbo_t2\".c_int, \"cbo_/t3////\".p from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join \"//cbo_t2\"  on \"c/b/o_t1\".a=key join (select key as p, c_int as q, \"cbo_/t3////\".c_float as r from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".a=\"cbo_/t3////\".p");
    parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".c_int, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".a=\"//cbo_t2\".key join \"cbo_/t3////\" on \"c/b/o_t1\".a=\"cbo_/t3////\".key");
    parse("select \"cbo_/t3////\".c_int, b, \"//cbo_t2\".c_int, \"c/b/o_t1\".c from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".a=\"//cbo_t2\".key join \"cbo_/t3////\" on \"c/b/o_t1\".a=\"cbo_/t3////\".key");
    parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" left outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
    parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p left outer join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
    parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" right outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
    parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p right outer join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
    parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
    parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p full outer join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
  }
Parser tests special character in table names.
parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNamesQuotes.java