Beispiel #1
0
 /** JOIN clause in FROM */
 public Integer fromJoin(HplsqlParser.From_join_clauseContext ctx) {
   StringBuilder sql = new StringBuilder();
   if (ctx.T_COMMA() != null) {
     sql.append(", ");
     sql.append(evalPop(ctx.from_table_clause()));
   } else if (ctx.from_join_type_clause() != null) {
     sql.append(" ");
     sql.append(exec.getText(ctx.from_join_type_clause()));
     sql.append(" ");
     sql.append(evalPop(ctx.from_table_clause()));
     sql.append(" ");
     sql.append(exec.getText(ctx, ctx.T_ON().getSymbol(), ctx.bool_expr().getStop()));
   }
   exec.stackPush(sql);
   return 0;
 }
Beispiel #2
0
 /** CREATE TABLE statement */
 public Integer createTable(HplsqlParser.Create_table_stmtContext ctx) {
   trace(ctx, "CREATE TABLE");
   StringBuilder sql = new StringBuilder();
   sql.append(exec.getText(ctx, ctx.T_CREATE().getSymbol(), ctx.T_OPEN_P().getSymbol()));
   int cnt = ctx.create_table_columns().create_table_columns_item().size();
   int cols = 0;
   for (int i = 0; i < cnt; i++) {
     Create_table_columns_itemContext col =
         ctx.create_table_columns().create_table_columns_item(i);
     if (col.create_table_column_cons() != null) {
       continue;
     }
     if (cols > 0) {
       sql.append(",\n");
     }
     sql.append(col.ident().getText());
     sql.append(" ");
     sql.append(exec.evalPop(col.dtype(), col.dtype_len()));
     cols++;
   }
   sql.append("\n)");
   if (ctx.create_table_options() != null) {
     sql.append(" " + evalPop(ctx.create_table_options()).toString());
   }
   trace(ctx, sql.toString());
   Query query = exec.executeSql(ctx, sql.toString(), exec.conf.defaultConnection);
   if (query.error()) {
     exec.signal(query);
     return 1;
   }
   exec.setSqlSuccess();
   exec.closeQuery(query, exec.conf.defaultConnection);
   return 0;
 }
Beispiel #3
0
 /** Unary boolean expression in executable SQL statement */
 public Integer execBoolUnarySql(HplsqlParser.Bool_expr_unaryContext ctx) {
   StringBuilder sql = new StringBuilder();
   if (ctx.T_IS() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" " + exec.getText(ctx, ctx.T_IS().getSymbol(), ctx.T_NULL().getSymbol()));
   } else if (ctx.T_BETWEEN() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" " + ctx.T_BETWEEN().getText() + " ");
     sql.append(evalPop(ctx.expr(1)).toString());
     sql.append(" " + ctx.T_AND().getText() + " ");
     sql.append(evalPop(ctx.expr(2)).toString());
   } else if (ctx.T_EXISTS() != null) {
     exec.append(sql, exec.nvl(ctx.T_NOT(), ctx.T_EXISTS()), ctx.T_OPEN_P());
     exec.append(
         sql,
         evalPop(ctx.select_stmt()).toString(),
         ctx.T_OPEN_P().getSymbol(),
         ctx.select_stmt().getStart());
     exec.append(
         sql, ctx.T_CLOSE_P().getText(), ctx.select_stmt().stop, ctx.T_CLOSE_P().getSymbol());
   } else if (ctx.bool_expr_single_in() != null) {
     singleInClauseSql(ctx.bool_expr_single_in(), sql);
   } else if (ctx.bool_expr_multi_in() != null) {
     multiInClauseSql(ctx.bool_expr_multi_in(), sql);
   }
   exec.stackPush(sql);
   return 0;
 }
Beispiel #4
0
 /** Single table name in FROM */
 public Integer fromTable(HplsqlParser.From_table_name_clauseContext ctx) {
   StringBuilder sql = new StringBuilder();
   sql.append(evalPop(ctx.table_name()));
   if (ctx.from_alias_clause() != null) {
     sql.append(" ").append(exec.getText(ctx.from_alias_clause()));
   }
   exec.stackPush(sql);
   return 0;
 }
Beispiel #5
0
 /** SELECT list */
 public Integer selectList(HplsqlParser.Select_listContext ctx) {
   StringBuilder sql = new StringBuilder();
   if (ctx.select_list_set() != null) {
     sql.append(exec.getText(ctx.select_list_set())).append(" ");
   }
   int cnt = ctx.select_list_item().size();
   for (int i = 0; i < cnt; i++) {
     if (ctx.select_list_item(i).select_list_asterisk() == null) {
       sql.append(evalPop(ctx.select_list_item(i).expr()));
       if (ctx.select_list_item(i).select_list_alias() != null) {
         sql.append(" " + exec.getText(ctx.select_list_item(i).select_list_alias()));
       }
     } else {
       sql.append(exec.getText(ctx.select_list_item(i).select_list_asterisk()));
     }
     if (i + 1 < cnt) {
       sql.append(", ");
     }
   }
   exec.stackPush(sql);
   return 0;
 }