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    etkHuge(28), //dameng huge table
036    ;
037
038    private final int value;
039    private static final Map<Integer, ETableKind> map = new HashMap<>();
040
041    static {
042        for (ETableKind tableKind : ETableKind.values()) {
043            map.put(tableKind.value, tableKind);
044        }
045    }
046
047    private ETableKind(int value) {
048        this.value = value;
049    }
050
051    public int getValue() {
052        return value;
053    }
054
055    public static ETableKind fromValue(int value) {
056        return map.get(value);
057    }
058}