public static QueryState fromProto()

in core/src/main/java/org/apache/calcite/avatica/QueryState.java [406:451]


  public static QueryState fromProto(Common.QueryState protoState) {
    StateType type = StateType.fromProto(protoState.getType());
    String sql = protoState.getHasSql() ? protoState.getSql() : null;
    MetaDataOperation op = protoState.getHasOp()
        ? MetaDataOperation.fromProto(protoState.getOp()) : null;
    Object[] opArgs = null;
    if (protoState.getHasArgs()) {
      opArgs = new Object[protoState.getArgsCount()];
      int i = 0;
      for (Common.MetaDataOperationArgument arg : protoState.getArgsList()) {
        switch (arg.getType()) {
        case STRING:
          opArgs[i] = arg.getStringValue();
          break;
        case BOOL:
          opArgs[i] = arg.getBoolValue();
          break;
        case INT:
          opArgs[i] = arg.getIntValue();
          break;
        case REPEATED_STRING:
          opArgs[i] = arg.getStringArrayValuesList().toArray(
              new String[arg.getStringArrayValuesCount()]);
          break;
        case REPEATED_INT:
          int[] arr = new int[arg.getIntArrayValuesCount()];
          int offset = 0;
          for (Integer val : arg.getIntArrayValuesList()) {
            arr[offset] = val;
            offset++;
          }
          opArgs[i] = arr;
          break;
        case NULL:
          opArgs[i] = null;
          break;
        default:
          throw new RuntimeException("Could not interpret " + arg.getType());
        }

        i++;
      }
    }

    return new QueryState(type, sql, op, opArgs);
  }