Example #1
0
  public void processSQL(String sql, EngineCtx ctx) {
    String ssql = joinParser.getSql();
    getRoute(ssql);
    RouteResultsetNode[] nodes = rrs.getNodes();
    if (nodes == null
        || nodes.length == 0
        || nodes[0].getName() == null
        || nodes[0].getName().equals("")) {
      ctx.getSession()
          .getSource()
          .writeErrMessage(
              ErrorCode.ER_NO_DB_ERROR,
              "No dataNode found ,please check tables defined in schema:"
                  + ctx.getSession().getSource().getSchema());
      return;
    }
    this.ctx = ctx;
    String[] dataNodes = getDataNodes();
    maxjob = dataNodes.length;
    ShareDBJoinHandler joinHandler = new ShareDBJoinHandler(this, joinParser.getJoinLkey());
    ctx.executeNativeSQLSequnceJob(dataNodes, ssql, joinHandler);
    EngineCtx.LOGGER.info("Catlet exec:" + getDataNode(getDataNodes()) + " sql:" + ssql);

    ctx.setAllJobFinishedListener(
        new AllJobFinishedListener() {
          @Override
          public void onAllJobFinished(EngineCtx ctx) {
            if (!jointTableIsData) {
              ctx.writeHeader(fields);
            }
            ctx.writeEof();
            EngineCtx.LOGGER.info("发送数据OK");
          }
        });
  }