001package gudusoft.gsqlparser; 002 003/** 004 * OceanBase tenant compatibility mode. 005 * 006 * <p>OceanBase is a multi-tenant database whose SQL surface depends on the 007 * tenant kind. Each {@link TGSqlParser} instance configured for 008 * {@link EDbVendor#dbvoceanbase} carries one of these modes: 009 * 010 * <ul> 011 * <li>{@link #MYSQL} — User tenant in MySQL compatibility mode. SQL surface 012 * is MySQL 5.7 / 8.0 plus OceanBase extensions. Uses backtick-quoted 013 * identifiers and {@code ;} as the statement terminator.</li> 014 * <li>{@link #ORACLE} — User tenant in Oracle compatibility mode. SQL surface 015 * is Oracle SQL plus PL/SQL plus OceanBase extensions. Uses double-quoted 016 * identifiers, {@code /} as the PL/SQL block delimiter, and supports 017 * packages, anonymous blocks, and PL/SQL routines.</li> 018 * <li>{@link #SYSTEM} — System ({@code sys}) tenant. Lexically MySQL-family 019 * (backticks, {@code ;}, no PL/SQL) but additionally accepts 020 * OceanBase administrative DDL such as {@code CREATE TENANT}, 021 * {@code ALTER SYSTEM}, {@code CREATE RESOURCE POOL}, 022 * {@code CREATE RESOURCE UNIT}, and zone/server management commands.</li> 023 * </ul> 024 * 025 * <p>Tenant mode is permanent for the life of an OceanBase tenant on the 026 * server side; this enum mirrors that immutability at the parser level. 027 * One mode per {@link TGSqlParser} instance — do not switch modes mid-script. 028 * 029 * <p>Set the mode via {@link TGSqlParser#setOBTenantMode(EOBTenantMode)}. 030 * The default for a freshly constructed parser configured for 031 * {@code dbvoceanbase} is {@link #MYSQL}. 032 * 033 * @since 4.0.1.4 034 */ 035public enum EOBTenantMode { 036 /** User tenant — MySQL compatibility mode (default). */ 037 MYSQL, 038 039 /** User tenant — Oracle compatibility mode (full PL/SQL). */ 040 ORACLE, 041 042 /** System ({@code sys}) tenant — MySQL syntax + OceanBase administrative DDL. */ 043 SYSTEM 044}