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 ]
|
dimTables = [ (fact, extractDimensionTables env fact) | fact <- envFacts ]
|
||||||
factTables = [ (fact, extractFactTable 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
|
| (_, tabs) <- dimTables
|
||||||
, table <- tabs
|
, table <- tabs
|
||||||
, table `notElem` envTables ]
|
, table `notElem` envTables ]
|
||||||
|
@ -3,7 +3,7 @@ module Ringo
|
|||||||
, extractFactTable
|
, extractFactTable
|
||||||
, extractDimensionTables
|
, extractDimensionTables
|
||||||
, extractDependencies
|
, extractDependencies
|
||||||
, tableDefnSQL
|
, dimensionTableDefnSQL
|
||||||
, factTableDefnSQL
|
, factTableDefnSQL
|
||||||
, dimensionTablePopulateSQL
|
, dimensionTablePopulateSQL
|
||||||
, factTablePopulateSQL
|
, factTablePopulateSQL
|
||||||
@ -28,8 +28,8 @@ extractDimensionTables env = flip runReader env . E.extractDimensionTables
|
|||||||
extractDependencies :: Env -> Fact -> Dependencies
|
extractDependencies :: Env -> Fact -> Dependencies
|
||||||
extractDependencies env = flip runReader env . E.extractDependencies
|
extractDependencies env = flip runReader env . E.extractDependencies
|
||||||
|
|
||||||
tableDefnSQL :: Env -> Table -> [Text]
|
dimensionTableDefnSQL :: Env -> Table -> [Text]
|
||||||
tableDefnSQL env = flip runReader env . G.tableDefnSQL
|
dimensionTableDefnSQL env = flip runReader env . G.dimensionTableDefnSQL
|
||||||
|
|
||||||
factTableDefnSQL :: Env -> Fact -> Table -> [Text]
|
factTableDefnSQL :: Env -> Fact -> Table -> [Text]
|
||||||
factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
|
factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
module Ringo.Generator
|
module Ringo.Generator
|
||||||
( tableDefnSQL
|
( dimensionTableDefnSQL
|
||||||
, factTableDefnSQL
|
, factTableDefnSQL
|
||||||
, dimensionTablePopulateSQL
|
, dimensionTablePopulateSQL
|
||||||
, factTablePopulateSQL
|
, 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)
|
#if MIN_VERSION_base(4,8,0)
|
||||||
#else
|
#else
|
||||||
@ -40,6 +40,16 @@ tableDefnSQL Table {..} = do
|
|||||||
|
|
||||||
return $ tableSQL : concatMap constraintDefnSQL tableConstraints
|
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 -> Reader Env [Text]
|
||||||
factTableDefnSQL fact table = do
|
factTableDefnSQL fact table = do
|
||||||
Settings {..} <- asks envSettings
|
Settings {..} <- asks envSettings
|
||||||
|
Loading…
Reference in New Issue
Block a user