From 92b734d0a44fece5657e548a1fb65d7bf93ab7bb Mon Sep 17 00:00:00 2001 From: Quentin Machu Date: Mon, 18 Jan 2016 22:03:38 -0500 Subject: [PATCH] database: remove an useless query in FindLayer --- database/pgsql/layer.go | 45 ++++++++++++--------------------------- database/pgsql/queries.go | 17 --------------- 2 files changed, 14 insertions(+), 48 deletions(-) diff --git a/database/pgsql/layer.go b/database/pgsql/layer.go index 645ce2f4..3909fe42 100644 --- a/database/pgsql/layer.go +++ b/database/pgsql/layer.go @@ -43,7 +43,7 @@ func (pgSQL *pgSQL) FindLayer(name string, withFeatures, withVulnerabilities boo // Find its features if withFeatures || withVulnerabilities { - featureVersions, err := pgSQL.getLayerFeatureVersions(layer.ID, !withFeatures) + featureVersions, err := pgSQL.getLayerFeatureVersions(layer.ID) if err != nil { return layer, err } @@ -62,47 +62,30 @@ func (pgSQL *pgSQL) FindLayer(name string, withFeatures, withVulnerabilities boo } // getLayerFeatureVersions returns list of database.FeatureVersion that a database.Layer has. -// if idOnly is specified, the returned structs will only have their ID filled. Otherwise, -// it also gets their versions, feature's names, feature's namespace's names. -func (pgSQL *pgSQL) getLayerFeatureVersions(layerID int, idOnly bool) ([]database.FeatureVersion, error) { +func (pgSQL *pgSQL) getLayerFeatureVersions(layerID int) ([]database.FeatureVersion, error) { var featureVersions []database.FeatureVersion - // Build query - var query string - if idOnly { - query = getQuery("s_layer_featureversion_id_only") - } else { - query = getQuery("s_layer_featureversion") - } - - // Query - rows, err := pgSQL.Query(query, layerID) + // Query. + rows, err := pgSQL.Query(getQuery("s_layer_featureversion"), layerID) if err != nil { - return featureVersions, handleError(query, err) + return featureVersions, handleError("s_layer_featureversion", err) } defer rows.Close() - // Scan query + // Scan query. var modification string mapFeatureVersions := make(map[int]database.FeatureVersion) for rows.Next() { var featureVersion database.FeatureVersion - if idOnly { - err = rows.Scan(&featureVersion.ID, &modification) - if err != nil { - return featureVersions, handleError(query+".Scan()", err) - } - } else { - err = rows.Scan(&featureVersion.ID, &modification, &featureVersion.Feature.Namespace.ID, - &featureVersion.Feature.Namespace.Name, &featureVersion.Feature.ID, - &featureVersion.Feature.Name, &featureVersion.ID, &featureVersion.Version) - if err != nil { - return featureVersions, handleError(query+".Scan()", err) - } + err = rows.Scan(&featureVersion.ID, &modification, &featureVersion.Feature.Namespace.ID, + &featureVersion.Feature.Namespace.Name, &featureVersion.Feature.ID, + &featureVersion.Feature.Name, &featureVersion.ID, &featureVersion.Version) + if err != nil { + return featureVersions, handleError("s_layer_featureversion.Scan()", err) } - // Do transitive closure + // Do transitive closure. switch modification { case "add": mapFeatureVersions[featureVersion.ID] = featureVersion @@ -114,10 +97,10 @@ func (pgSQL *pgSQL) getLayerFeatureVersions(layerID int, idOnly bool) ([]databas } } if err = rows.Err(); err != nil { - return featureVersions, handleError(query+".Rows()", err) + return featureVersions, handleError("s_layer_featureversion.Rows()", err) } - // Build result by converting our map to a slice + // Build result by converting our map to a slice. for _, featureVersion := range mapFeatureVersions { featureVersions = append(featureVersions, featureVersion) } diff --git a/database/pgsql/queries.go b/database/pgsql/queries.go index dbb19230..c65a5aa9 100644 --- a/database/pgsql/queries.go +++ b/database/pgsql/queries.go @@ -69,23 +69,6 @@ func init() { LEFT JOIN Namespace n ON l.namespace_id = n.id WHERE l.name = $1;` - queries["s_layer_featureversion_id_only"] = ` - WITH RECURSIVE layer_tree(id, parent_id, depth, path, cycle) AS( - SELECT l.id, l.parent_id, 1, ARRAY[l.id], false - FROM Layer l - WHERE l.id = $1 - UNION ALL - SELECT l.id, l.parent_id, lt.depth + 1, path || l.id, l.id = ANY(path) - FROM Layer l, layer_tree lt - WHERE l.id = lt.parent_id - ) - SELECT ldf.featureversion_id, ldf.modification - FROM Layer_diff_FeatureVersion ldf - JOIN ( - SELECT row_number() over (ORDER BY depth DESC), id FROM layer_tree - ) AS ltree (ordering, id) ON ldf.layer_id = ltree.id - ORDER BY ltree.ordering` - queries["s_layer_featureversion"] = ` WITH RECURSIVE layer_tree(id, parent_id, depth, path, cycle) AS( SELECT l.id, l.parent_id, 1, ARRAY[l.id], false