001package gudusoft.gsqlparser;
002
003import java.util.HashMap;
004import java.util.Map;
005
006public enum ETableKind {
007    etkBase(0),
008    etkTemporary(1),
009    etkGlobalTemporary(2),
010    etkLocalTemporary(3),
011    etkTemp(4),
012    etkGlobalTemp(5),
013    etkLocalTemp(6),
014    etkVolatile(7),
015    etkLocalVolatile(8),
016    etkGlobalVolatile(9),
017    etkSet(10), //teradata specific
018    etkMultiset(11), //Ansi
019    etkExternal(12),
020    etkTransient(13),
021    etkLocal(14),
022    etkUnlogged(15),
023    etkDynamic(16), //snowflake
024    etkHybrid(17),
025    etkTransientDynamic(18), //snowflake
026    etkForeign(19), //postgresql foreign table
027    etkPrivateTemporary(20), //oracle 18c+ private temporary table
028    etkBlockchain(21), //oracle 19c+ blockchain table
029    etkImmutable(22), //oracle 19c+ immutable table
030    etkSharded(23), //oracle sharding - sharded table
031    etkDuplicated(24), //oracle sharding - duplicated table
032    etkManaged(25), //hive managed table
033    etkIceberg(26), //snowflake iceberg table
034    etkFlex(27), //vertica flex table
035    ;
036
037    private final int value;
038    private static final Map<Integer, ETableKind> map = new HashMap<>();
039
040    static {
041        for (ETableKind tableKind : ETableKind.values()) {
042            map.put(tableKind.value, tableKind);
043        }
044    }
045
046    private ETableKind(int value) {
047        this.value = value;
048    }
049
050    public int getValue() {
051        return value;
052    }
053
054    public static ETableKind fromValue(int value) {
055        return map.get(value);
056    }
057}