docs: public void compileInMemoryJarfileWithNewDDL(InMemoryJarfile jarfile, String newDDL, Catalog oldCatalog) throws IOException, VoltCompilerException
      {
          String oldDDL = new String(jarfile.get(VoltCompiler.AUTOGEN_DDL_FILE_NAME),
                  Constants.UTF8ENCODING);
          compilerLog.trace("OLD DDL: " + oldDDL);
  
          VoltCompilerStringReader canonicalDDLReader = null;
          VoltCompilerStringReader newDDLReader = null;
  
          // Use the in-memory jarfile-provided class loader so that procedure
          // classes can be found and copied to the new file that gets written.
          ClassLoader originalClassLoader = m_classLoader;
          try {
              canonicalDDLReader = new VoltCompilerStringReader(VoltCompiler.AUTOGEN_DDL_FILE_NAME, oldDDL);
              newDDLReader = new VoltCompilerStringReader("Ad Hoc DDL Input", newDDL);
  
              List<VoltCompilerReader> ddlList = new ArrayList<>();
              ddlList.add(newDDLReader);
  
              m_classLoader = jarfile.getLoader();
              // Do the compilation work.
              InMemoryJarfile jarOut = compileInternal(canonicalDDLReader, oldCatalog, ddlList, jarfile);
              // Trim the compiler output to try to provide a concise failure
              // explanation
              if (jarOut == null) {
                  String errString = "Adhoc DDL failed";
                  if (m_errors.size() > 0) {
                      errString = m_errors.get(m_errors.size() - 1).getLogString();
                  }
  
                  int endtrim = errString.indexOf(" in statement starting");
                  if (endtrim < 0) { endtrim = errString.length(); }
                  String trimmed = errString.substring(0, endtrim);
                  throw new VoltCompilerException(trimmed);
              }
              compilerLog.debug("Successfully recompiled InMemoryJarfile");
          }
          finally {
              // Restore the original class loader
              m_classLoader = originalClassLoader;
  
              if (canonicalDDLReader != null) {
                  try {
                      canonicalDDLReader.close();
                  }
                  catch (IOException ioe) {}
              }
              if (newDDLReader != null) {
                  try {
                      newDDLReader.close();
                  }
                  catch (IOException ioe) {}
              }
          }
      }