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