docs: private void validateTupleLimitDeleteStmt(Statement catStmt) throws VoltCompilerException {
          String tableName = catStmt.getParent().getTypeName();
          String msgPrefix = "Error: Table " + tableName + " has invalid DELETE statement for LIMIT PARTITION ROWS constraint: ";
          VoltXMLElement deleteXml = null;
          try {
              // We parse the statement here and cache the XML below if the statement passes
              // validation.
              deleteXml = m_hsql.getXMLCompiledStatement(catStmt.getSqltext());
              // We do not support calling user-defined functions in tuple limit delete statement.
              // This restriction can be lifted in the future.
              List<VoltXMLElement> exprs = deleteXml.findChildrenRecursively("function");
              for (VoltXMLElement expr : exprs) {
                  int functionId = Integer.parseInt(expr.attributes.get("function_id"));
                  if (FunctionForVoltDB.isUserDefinedFunctionId(functionId)) {
                      String functionName = expr.attributes.get("name");
                      throw m_compiler.new VoltCompilerException(
                              msgPrefix
                              + "user defined function calls are not supported: \""
                              + functionName
                              + "\""
                      );
                  }
              }
          }
          catch (HSQLInterface.HSQLParseException e) {
              throw m_compiler.new VoltCompilerException(msgPrefix + "parse error: " + e.getMessage());
          }
  
          if (! deleteXml.name.equals("delete")) {
              // Could in theory allow TRUNCATE TABLE here too.
              throw m_compiler.new VoltCompilerException(msgPrefix + "not a DELETE statement");
          }
  
          String deleteTarget = deleteXml.attributes.get("table");
          if (! deleteTarget.equals(tableName)) {
              throw m_compiler.new VoltCompilerException(msgPrefix + "target of DELETE must be " + tableName);
          }
  
          m_limitDeleteStmtToXml.put(catStmt, deleteXml);
      }