packages feed

simple-sql-parser-0.8.0: tests/Language/SQL/SimpleSQL/MySQL.hs

-- Tests for mysql dialect parsing

{-# LANGUAGE OverloadedStrings #-}
module Language.SQL.SimpleSQL.MySQL (mySQLTests) where

import Language.SQL.SimpleSQL.TestTypes
import Language.SQL.SimpleSQL.Syntax
import Language.SQL.SimpleSQL.TestRunners

mySQLTests :: TestItem
mySQLTests = Group "mysql dialect"
    [backtickQuotes
    ,limit]

{-
backtick quotes

limit syntax

[LIMIT {[offset,] row_count | row_count OFFSET offset}]
-}

backtickQuotes :: TestItem
backtickQuotes = Group "backtickQuotes"
    [testScalarExpr mysql "`test`" $ Iden [Name (Just ("`","`")) "test"]
    ,testParseScalarExprFails ansi2011 "`test`"]

limit :: TestItem
limit = Group "queries"
    [testQueryExpr mysql "select * from t limit 5"
     $ toQueryExpr $ sel {msFetchFirst = Just (NumLit "5")}
    ,testParseQueryExprFails mysql "select a from t fetch next 10 rows only;"
    ,testParseQueryExprFails ansi2011 "select * from t limit 5"]
  where
    sel = makeSelect
          {msSelectList = [(Star, Nothing)]
          ,msFrom = [TRSimple [Name Nothing "t"]]
          }