Adds indexes on dimension table columns in SQL.
This commit is contained in:
parent
e2ecfc0b9b
commit
0d5e1ff29f
@ -55,7 +55,7 @@ writeFiles outputDir env@Env{..} = do
|
||||
dimTables = [ (fact, extractDimensionTables env fact) | fact <- envFacts ]
|
||||
factTables = [ (fact, extractFactTable env fact) | fact <- envFacts ]
|
||||
|
||||
dimTableDefnSQLs = [ (Create, tableName table, unlines . map sqlStr $ tableDefnSQL env table)
|
||||
dimTableDefnSQLs = [ (Create, tableName table, unlines . map sqlStr $ dimensionTableDefnSQL env table)
|
||||
| (_, tabs) <- dimTables
|
||||
, table <- tabs
|
||||
, table `notElem` envTables ]
|
||||
|
@ -3,7 +3,7 @@ module Ringo
|
||||
, extractFactTable
|
||||
, extractDimensionTables
|
||||
, extractDependencies
|
||||
, tableDefnSQL
|
||||
, dimensionTableDefnSQL
|
||||
, factTableDefnSQL
|
||||
, dimensionTablePopulateSQL
|
||||
, factTablePopulateSQL
|
||||
@ -28,8 +28,8 @@ extractDimensionTables env = flip runReader env . E.extractDimensionTables
|
||||
extractDependencies :: Env -> Fact -> Dependencies
|
||||
extractDependencies env = flip runReader env . E.extractDependencies
|
||||
|
||||
tableDefnSQL :: Env -> Table -> [Text]
|
||||
tableDefnSQL env = flip runReader env . G.tableDefnSQL
|
||||
dimensionTableDefnSQL :: Env -> Table -> [Text]
|
||||
dimensionTableDefnSQL env = flip runReader env . G.dimensionTableDefnSQL
|
||||
|
||||
factTableDefnSQL :: Env -> Fact -> Table -> [Text]
|
||||
factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
|
||||
|
@ -1,5 +1,5 @@
|
||||
module Ringo.Generator
|
||||
( tableDefnSQL
|
||||
( dimensionTableDefnSQL
|
||||
, factTableDefnSQL
|
||||
, dimensionTablePopulateSQL
|
||||
, factTablePopulateSQL
|
||||
|
@ -1,4 +1,4 @@
|
||||
module Ringo.Generator.Create (tableDefnSQL, factTableDefnSQL) where
|
||||
module Ringo.Generator.Create (dimensionTableDefnSQL, factTableDefnSQL) where
|
||||
|
||||
#if MIN_VERSION_base(4,8,0)
|
||||
#else
|
||||
@ -40,6 +40,16 @@ tableDefnSQL Table {..} = do
|
||||
|
||||
return $ tableSQL : concatMap constraintDefnSQL tableConstraints
|
||||
|
||||
dimensionTableDefnSQL :: Table -> Reader Env [Text]
|
||||
dimensionTableDefnSQL table@Table {..} = do
|
||||
Settings {..} <- asks envSettings
|
||||
let tabName = tableName <> settingTableNameSuffixTemplate
|
||||
tablePKColName = head [ cName | PrimaryKey cName <- tableConstraints ]
|
||||
nonPKColNames = [ cName | Column cName _ _ <- tableColumns, cName /= tablePKColName ]
|
||||
indexSQLs = [ "CREATE INDEX ON " <> tabName <> " (" <> cName <> ")"
|
||||
| cName <- nonPKColNames ]
|
||||
(++ indexSQLs) <$> tableDefnSQL table
|
||||
|
||||
factTableDefnSQL :: Fact -> Table -> Reader Env [Text]
|
||||
factTableDefnSQL fact table = do
|
||||
Settings {..} <- asks envSettings
|
||||
|
Loading…
Reference in New Issue
Block a user