code: protected StmtCommonTableScanShared defineCommonTableScanShared(String tableName, int stmtId) {
          assert (m_commonTableSharedMap.get(tableName) == null);
          StmtCommonTableScanShared answer = new StmtCommonTableScanShared(tableName, stmtId);
          m_commonTableSharedMap.put(tableName, answer);
          return answer;
      }
docs: Lookup or define the shared part of a common table by name.  This happens when the
  common table name is first encountered.  For example,
  in the SQL: "with name as ( select * from ttt ) select name as a, name as b"
  the name "name" is a common table name.  It's not an
  alias.  This is comparable to defining a table name in
  the catalog, but it does not persist past the current
  statement.  So it does not make any sense to make it a
  catalog entry.
  
  @param tableName The table name, not the table alias.