/**
  * Execute prepared query.
  *
  * @param phandle the phandle
  * @param async the asynch
  * @param queryName the query name
  * @return the string
  */
 @CliCommand(
     value = "prepQuery execute",
     help =
         "Execute prepared query with handle <prepare_handle>."
             + " If <async> is supplied and is true, query is run in async manner and query handle is returned immediately."
             + " Optionally, <query-name> can be provided, though not required.")
 public String executePreparedQuery(
     @CliOption(
             key = {"", "prepare_handle"},
             mandatory = true,
             help = "Prepare handle to execute")
         String phandle,
     @CliOption(
             key = {"async"},
             mandatory = false,
             unspecifiedDefaultValue = "false",
             specifiedDefaultValue = "true",
             help = "<async>")
         boolean async,
     @CliOption(
             key = {"name"},
             mandatory = false,
             help = "<query-name>")
         String queryName) {
   if (async) {
     QueryHandle handle =
         getClient().executePrepared(QueryPrepareHandle.fromString(phandle), queryName);
     return handle.getHandleId().toString();
   } else {
     try {
       LensClient.LensClientResultSetWithStats result =
           getClient().getResultsFromPrepared(QueryPrepareHandle.fromString(phandle), queryName);
       return formatResultSet(result);
     } catch (Throwable t) {
       return t.getMessage();
     }
   }
 }
 /**
  * Gets the prepared status.
  *
  * @param ph the ph
  * @return the prepared status
  */
 @CliCommand(value = "prepQuery details", help = "Get prepared query with handle <prepare_handle>")
 public String getPreparedStatus(
     @CliOption(
             key = {"", "prepare_handle"},
             mandatory = true,
             help = "<prepare_handle>")
         String ph) {
   LensPreparedQuery prepared = getClient().getPreparedQuery(QueryPrepareHandle.fromString(ph));
   if (prepared != null) {
     StringBuilder sb =
         new StringBuilder()
             .append("User query:")
             .append(prepared.getUserQuery())
             .append("\n")
             .append("Prepare handle:")
             .append(prepared.getPrepareHandle())
             .append("\n")
             .append("User:"******"\n")
             .append("Prepared at:")
             .append(prepared.getPreparedTime())
             .append("\n")
             .append("Selected driver :")
             .append(prepared.getSelectedDriverName())
             .append("\n")
             .append("Driver query:")
             .append(prepared.getDriverQuery())
             .append("\n");
     if (prepared.getConf() != null) {
       sb.append("Conf:").append(prepared.getConf().getProperties()).append("\n");
     }
     return sb.toString();
   } else {
     return "No such handle";
   }
 }