docs: function (op, args) {
              var likeOps = ["~", "~*", "LIKE", "ILIKE"];
              var notLikeOps = ["!~", "!~*", "NOT LIKE", "NOT ILIKE"];
              var regExpOps = ["~", "!~", "~*", "!~*"];
              var binaryOps = ["~", "!~", "LIKE", "NOT LIKE"];
              if (likeOps.indexOf(op) !== -1 || notLikeOps.indexOf(op) !== -1) {
                  return format("(%s%s %s%s %s)", this.literal(args[0]), notLikeOps.indexOf(op) !== -1 ? " NOT" : "",
                      regExpOps.indexOf(op) !== -1 ? "REGEXP" : "LIKE", binaryOps.indexOf(op) !== -1 ? " BINARY" : "",
                      this.literal(args[1]));
              } else if (op === "||") {
                  if (args.length > 1) {
                      return format("CONCAT(%s)", args.map(this.literal, this).join(", "));
                  } else {
                      return this.literal(args[0]);
                  }
              } else if (op === "B~") {
                  return format("CAST(~%s AS SIGNED INTEGER)", this.literal(args[0]));
              } else {
                  return this._super(arguments);
              }
          }