001package gudusoft.gsqlparser.resolver2.format; 002 003/** 004 * Controls how identifier names are rendered for display output. 005 * 006 * <p>This mode determines the "visual style" of the output - whether to show 007 * raw SQL form with quotes, clean display form without quotes, or canonical form.</p> 008 * 009 * <p>Note: This is separate from {@link DisplayNamePolicy} which determines 010 * "which occurrence to use" when the same object appears multiple times with 011 * different spellings.</p> 012 * 013 * <h3>Example with SQL Server:</h3> 014 * <pre> 015 * SQL: SELECT [OrderID] FROM [dbo].[SalesOrder] 016 * 017 * DISPLAY: dbo.SalesOrder, OrderID (quotes stripped, case preserved) 018 * SQL_RENDER: [dbo].[SalesOrder], [OrderID] (quotes preserved) 019 * CANONICAL: dbo.salesorder, orderid (vendor-specific folding applied) 020 * </pre> 021 * 022 * @see DisplayNamePolicy 023 * @see DisplayNameNormalizer 024 */ 025public enum DisplayNameMode { 026 027 /** 028 * Display mode: strip delimiters, preserve original case. 029 * 030 * <p>Recommended for debugging and test output. Produces clean, readable 031 * output that reflects what the user wrote (minus the quote noise).</p> 032 * 033 * <p>Examples:</p> 034 * <ul> 035 * <li>{@code [OrderID]} → {@code OrderID}</li> 036 * <li>{@code `kalyan-DB`} → {@code kalyan-DB}</li> 037 * <li>{@code "MyTable"} → {@code MyTable}</li> 038 * </ul> 039 */ 040 DISPLAY, 041 042 /** 043 * SQL render mode: preserve delimiters for valid SQL regeneration. 044 * 045 * <p>Use when output needs to be valid SQL that can be re-executed. 046 * Preserves necessary quotes/brackets for special characters and 047 * reserved words.</p> 048 * 049 * <p>Examples:</p> 050 * <ul> 051 * <li>{@code [Order ID]} → {@code [Order ID]} (space requires brackets)</li> 052 * <li>{@code `kalyan-DB`} → {@code `kalyan-DB`} (hyphen requires backticks)</li> 053 * </ul> 054 */ 055 SQL_RENDER, 056 057 /** 058 * Canonical mode: apply vendor-specific case folding. 059 * 060 * <p>Produces output matching the database's internal canonical form. 061 * Useful for comparing against metadata or catalog information.</p> 062 * 063 * <p>Examples (vendor-dependent):</p> 064 * <ul> 065 * <li>Oracle: {@code MyTable} → {@code MYTABLE} (unquoted folds to upper)</li> 066 * <li>PostgreSQL: {@code MyTable} → {@code mytable} (unquoted folds to lower)</li> 067 * <li>BigQuery: {@code MyTable} → {@code MyTable} (case-sensitive)</li> 068 * </ul> 069 */ 070 CANONICAL 071}