Repository: tobymao/sqlglot

Issue:
SQLGlot brakes AUTOINCREMENT statement without arguments in Snowflake dialect
Hi team,

I encountered an unexpected behavior with AUtOINCREMENT in Snowflake dialect
**Fully reproducible code snippet**
Please include a fully reproducible code snippet or the input sql, dialect, and expected output.
Code snippet:
```python
import sqlglot

print(
    sqlglot.parse_one("CREATE OR REPLACE TABLE security_events (event_id DECIMAL(38, 0) AUTOINCREMENT COMMENT 'id')", "snowflake").sql(dialect="snowflake")
)
```
output:
```
CREATE OR REPLACE TABLE security_events (event_id DECIMAL(38, 0) AUTO_INCREMENT COMMENT 'id')
```

As you see, `AUTOINCREMENT` was replaced with `AUTO_INCREMENT`, which causes that the query in broken.

**Official Documentation**
Please include links to official SQL documentation related to your issue.
 - https://docs.snowflake.com/en/sql-reference/sql/create-table#syntax

Discussion:

Solution patch:
diff --git a/sqlglot/dialects/snowflake.py b/sqlglot/dialects/snowflake.py
index 37a914973d..590bd8ae0e 100644
--- a/sqlglot/dialects/snowflake.py
+++ b/sqlglot/dialects/snowflake.py
@@ -1005,6 +1005,10 @@ class Generator(generator.Generator):
             exp.DataType.Type.STRUCT: "OBJECT",
         }
 
+        TOKEN_MAPPING = {
+            TokenType.AUTO_INCREMENT: "AUTOINCREMENT",
+        }
+
         PROPERTIES_LOCATION = {
             **generator.Generator.PROPERTIES_LOCATION,
             exp.SetProperty: exp.Properties.Location.UNSUPPORTED,


Test patch:
diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py
index cb38af753d..602a562ace 100644
--- a/tests/dialects/test_snowflake.py
+++ b/tests/dialects/test_snowflake.py
@@ -979,6 +979,8 @@ def test_snowflake(self):
         self.validate_identity("SELECT BIT_SHIFTLEFT(a, 1)", "SELECT BITSHIFTLEFT(a, 1)")
         self.validate_identity("SELECT BIT_SHIFTRIGHT(a, 1)", "SELECT BITSHIFTRIGHT(a, 1)")
 
+        self.validate_identity("CREATE TABLE t (id INT PRIMARY KEY AUTOINCREMENT)")
+
     def test_null_treatment(self):
         self.validate_all(
             r"SELECT FIRST_VALUE(TABLE1.COLUMN1) OVER (PARTITION BY RANDOM_COLUMN1, RANDOM_COLUMN2 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS MY_ALIAS FROM TABLE1",