/**
   * Overridden because check constraints can only be added to the table level. Each constraint
   * clause is delimited by a comma.
   */
  @Override
  protected String columnCheckConstraint(SQLColumn c, List<SQLCheckConstraint> checkConstraints) {
    if (!supportsCheckConstraint()
        || c == null
        || checkConstraints == null
        || checkConstraints.isEmpty()) {
      return "";
    }

    SPVariableResolver resolver = c.getVariableResolver();
    SPVariableHelper helper = new SPVariableHelper(c);
    SPResolverRegistry.register(c, resolver);

    StringBuilder sb = new StringBuilder();
    for (SQLCheckConstraint constraint : checkConstraints) {
      if (sb.length() > 0) {
        sb.append(",\n");
      }
      sb.append("                ");
      sb.append(
          String.format(
              "CONSTRAINT %s CHECK (%s)",
              constraint.getName(), helper.substitute(constraint.getConstraint())));
    }

    SPResolverRegistry.deregister(c, resolver);

    return sb.toString();
  }