SQLVersion.java
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2020 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.util.validation.feature;
import java.util.Collections;
import java.util.EnumSet;
import java.util.Set;
import net.sf.jsqlparser.parser.feature.Feature;
/**
* Enum containing the ANSI SQL Standard Versions - features are not guaranteed to be complete, just
* add them if you are sure they are part of the standard :)
*
* @author gitmotte
* @see <a href=
* "https://en.wikipedia.org/wiki/SQL#Interoperability_and_standardization">https://en.wikipedia.org/wiki/SQL#Interoperability_and_standardization</a>
*/
public enum SQLVersion implements Version {
SQL1986("SQL-86", EnumSet.of(
// supported if used with jdbc
Feature.jdbcParameter,
Feature.jdbcNamedParameter,
// common features
Feature.setOperation,
Feature.select,
Feature.selectGroupBy, Feature.function,
Feature.insert,
Feature.insertFromSelect,
Feature.insertValues,
Feature.values,
Feature.update,
Feature.delete,
Feature.truncate,
Feature.drop,
Feature.alterTable)), //
SQL1989("SQL-89", SQL1986.copy().getFeatures()), //
SQL1992("SQL-92", SQL1989.copy().getFeatures()), //
SQL1999("SQL:1999", SQL1992.copy().add(Feature.exprSimilarTo).getFeatures()), //
SQL2003("SQL:2003", SQL1999.copy().getFeatures()), //
SQL2006("SQL:2006", SQL2003.copy().getFeatures()), //
SQL2008("SQL:2008", SQL2006.copy().getFeatures()), //
SQL2011("SQL:2011", SQL2008.copy().getFeatures()), //
SQL2016("SQL:2016", SQL2011.copy().getFeatures()), //
SQL2019("SQL:2019", SQL2016.copy().getFeatures());
private Set<Feature> features;
private String versionString;
/**
* @param versionString
* @param featuresSupported
* @see #copy() to copy from previous version
*/
SQLVersion(String versionString, Set<Feature> featuresSupported) {
this(versionString, featuresSupported, Collections.emptySet());
}
/**
* @param versionString
* @param featuresSupported
* @param unsupported
* @see #copy() to copy from previous version
*/
SQLVersion(String versionString, Set<Feature> featuresSupported, Set<Feature> unsupported) {
this.versionString = versionString;
this.features = featuresSupported;
this.features.removeAll(unsupported);
}
@Override
public String getVersionString() {
return versionString;
}
@Override
public Set<Feature> getFeatures() {
return features;
}
@Override
public String getName() {
return DatabaseType.SQLSERVER.getName() + " " + getVersionString();
}
}