code: function (name, dataset, opts) {
              if (!this.supportsCte) {
                  throw new QueryError("this dataset does not support common table expressions");
              }
              return this.mergeOptions({
                  "with": (this.__opts["with"] || []).concat([merge(opts || {}, {name: this.stringToIdentifier(name), dataset: dataset})])
              });
          }
docs: Add a common table expression (CTE) with the given name and a dataset that defines the CTE.
  A common table expression acts as an inline view for the query.
  
  @name with
  @example
  
  DB.from("t")["with"]("t", db.from("x"))["with"]("j", db.from("y")).sql;
  //=> 'WITH t AS (SELECT * FROM x), j AS (SELECT * FROM y) SELECT * FROM t'
  
  DB.from("t")["with"]("t", db.from("x")).withRecursive("j", db.from("y"), db.from("j")).sql;
  //=> 'WITH t AS (SELECT * FROM x), j AS (SELECT * FROM y UNION ALL SELECT * FROM j) SELECT * FROM t'
  
  DB.from("t")["with"]("t", db.from("x"), {args:["b"]}).sql;
  //=> 'WITH t(b) AS (SELECT * FROM x) SELECT * FROM t'
  
  @param {String} name the name of the to assign to the CTE.
  @param {patio.Dataset} dataset the dataset to use for the CTE.
  @param {Object} opts extra options.
  @param {String[]} [opts.args] colums/args for the CTE.
  @param {Boolean} [opts.recursive] set to true that the CTE is recursive.
  
  @return {patio.Dataset} a cloned dataset with the CTE.