From 54cefdc2ee89a4319d6b9e7cb78e57992a916fc5 Mon Sep 17 00:00:00 2001 From: Greyson Fischer Date: Wed, 8 Apr 2020 01:05:07 -0400 Subject: [PATCH] Added basic `CREATE INDEX` parsing --- Language/SQL/SimpleSQL/Parse.lhs | 10 ++++++++++ Language/SQL/SimpleSQL/Syntax.lhs | 1 + 2 files changed, 11 insertions(+) diff --git a/Language/SQL/SimpleSQL/Parse.lhs b/Language/SQL/SimpleSQL/Parse.lhs index 82cd780..cb8c5df 100644 --- a/Language/SQL/SimpleSQL/Parse.lhs +++ b/Language/SQL/SimpleSQL/Parse.lhs @@ -1460,6 +1460,7 @@ TODO: change style > statement = choice > [keyword_ "create" *> choice [createSchema > ,createTable +> ,createIndex > ,createView > ,createDomain > ,createSequence @@ -1501,6 +1502,15 @@ TODO: change style > <*> parens (commaSep1 (uncurry TableConstraintDef <$> tableConstraintDef > <|> TableColumnDef <$> columnDef)) +> createIndex :: Parser Statement +> createIndex = +> CreateIndex +> <$> ((keyword_ "index" >> pure False) <|> +> (keywords_ ["unique", "index"] >> pure True)) +> <*> names +> <*> (keyword_ "on" >> name) +> <*> parens (commaSep1 name) + > columnDef :: Parser ColumnDef > columnDef = ColumnDef <$> name <*> typeName > <*> optionMaybe defaultClause diff --git a/Language/SQL/SimpleSQL/Syntax.lhs b/Language/SQL/SimpleSQL/Syntax.lhs index 3dfd440..886734c 100644 --- a/Language/SQL/SimpleSQL/Syntax.lhs +++ b/Language/SQL/SimpleSQL/Syntax.lhs @@ -454,6 +454,7 @@ I'm not sure if this is valid syntax or not. > | CreateTable [Name] [TableElement] > | AlterTable [Name] AlterTableAction > | DropTable [Name] DropBehaviour +> | CreateIndex Bool [Name] Name [Name] > | CreateView Bool [Name] (Maybe [Name]) > QueryExpr (Maybe CheckOption) > | DropView [Name] DropBehaviour