Add List Cluster Metadata API (#2206)

* Add List Cluster Metdata API

Co-authored-by: yux0 <[email protected]>
This commit is contained in:
Yu Xia
2021-11-19 14:31:25 -08:00
committed by GitHub
co-authored by yux0
parent 0ec9ed2411
commit dbbbb27dd6
17 changed files with 405 additions and 4 deletions
@@ -55,6 +55,7 @@ type (
ClusterMetadataFilter struct {
ClusterName string
PageSize *int
}
// ClusterMembershipFilter is used for GetClusterMembership queries
@@ -81,6 +82,7 @@ type (
SaveClusterMetadata(ctx context.Context, row *ClusterMetadataRow) (sql.Result, error)
GetClusterMetadataV1(ctx context.Context) (*ClusterMetadataRow, error) // TODO: deprecate this after 1.15+
GetClusterMetadata(ctx context.Context, filter *ClusterMetadataFilter) (*ClusterMetadataRow, error)
ListClusterMetadata(ctx context.Context, filter *ClusterMetadataFilter) ([]ClusterMetadataRow, error)
DeleteClusterMetadata(ctx context.Context, filter *ClusterMetadataFilter) (sql.Result, error)
WriteLockGetClusterMetadataV1(ctx context.Context) (*ClusterMetadataRow, error) // TODO: deprecate this after 1.15+
WriteLockGetClusterMetadata(ctx context.Context, filter *ClusterMetadataFilter) (*ClusterMetadataRow, error)
@@ -50,7 +50,10 @@ const (
updateClusterMetadataQry = `UPDATE cluster_metadata_info SET data = ?, data_encoding = ?, version = ? WHERE metadata_partition = ? AND cluster_name = ?`
getClusterMetadataQry = `SELECT data, data_encoding, version FROM cluster_metadata_info WHERE metadata_partition = ? AND cluster_name = ?`
getClusterMetadataBase = `SELECT data, data_encoding, version FROM cluster_metadata_info `
listClusterMetadataQry = getClusterMetadataBase + `WHERE metadata_partition = ? ORDER BY cluster_name LIMIT ?`
listClusterMetadataRangeQry = getClusterMetadataBase + `WHERE metadata_partition = ? AND cluster_name > ? ORDER BY cluster_name LIMIT ?`
getClusterMetadataQry = getClusterMetadataBase + `WHERE metadata_partition = ? AND cluster_name = ?`
writeLockGetClusterMetadataQry = getClusterMetadataQry + ` FOR UPDATE`
deleteClusterMetadataQry = `DELETE FROM cluster_metadata_info WHERE metadata_partition = ? AND cluster_name = ?`
@@ -129,6 +132,32 @@ func (mdb *db) SaveClusterMetadata(
)
}
func (mdb *db) ListClusterMetadata(
ctx context.Context,
filter *sqlplugin.ClusterMetadataFilter,
) ([]sqlplugin.ClusterMetadataRow, error) {
var err error
var rows []sqlplugin.ClusterMetadataRow
switch {
case len(filter.ClusterName) != 0:
err = mdb.conn.SelectContext(ctx,
&rows,
listClusterMetadataRangeQry,
constMetadataPartition,
filter.ClusterName,
filter.PageSize,
)
default:
err = mdb.conn.SelectContext(ctx,
&rows,
listClusterMetadataQry,
constMetadataPartition,
filter.PageSize,
)
}
return rows, err
}
func (mdb *db) GetClusterMetadataV1(ctx context.Context) (*sqlplugin.ClusterMetadataRow, error) {
var row sqlplugin.ClusterMetadataRow
err := mdb.conn.GetContext(ctx,
@@ -52,7 +52,10 @@ const (
updateClusterMetadataQry = `UPDATE cluster_metadata_info SET data = $1, data_encoding = $2, version = $3 WHERE metadata_partition = $4 AND cluster_name = $5`
getClusterMetadataQry = `SELECT data, data_encoding, version FROM cluster_metadata_info WHERE metadata_partition = $1 AND cluster_name = $2`
getClusterMetadataBase = `SELECT data, data_encoding, version FROM cluster_metadata_info `
getClusterMetadataQry = getClusterMetadataBase + `WHERE metadata_partition = $1 AND cluster_name = $2`
listClusterMetadataQry = getClusterMetadataBase + `WHERE metadata_partition = $1 ORDER BY cluster_name LIMIT $2`
listClusterMetadataRangeQry = getClusterMetadataBase + `WHERE metadata_partition = $1 AND cluster_name > $2 ORDER BY cluster_name LIMIT $3`
writeLockGetClusterMetadataQry = getClusterMetadataQry + ` FOR UPDATE`
@@ -134,6 +137,32 @@ func (pdb *db) SaveClusterMetadata(
)
}
func (pdb *db) ListClusterMetadata(
ctx context.Context,
filter *sqlplugin.ClusterMetadataFilter,
) ([]sqlplugin.ClusterMetadataRow, error) {
var err error
var rows []sqlplugin.ClusterMetadataRow
switch {
case len(filter.ClusterName) != 0:
err = pdb.conn.SelectContext(ctx,
&rows,
listClusterMetadataRangeQry,
constMetadataPartition,
filter.ClusterName,
filter.PageSize,
)
default:
err = pdb.conn.SelectContext(ctx,
&rows,
listClusterMetadataQry,
constMetadataPartition,
filter.PageSize,
)
}
return rows, err
}
func (pdb *db) GetClusterMetadataV1(ctx context.Context) (*sqlplugin.ClusterMetadataRow, error) {
var row sqlplugin.ClusterMetadataRow
err := pdb.conn.GetContext(ctx,
@@ -52,7 +52,10 @@ const (
updateClusterMetadataQry = `UPDATE cluster_metadata_info SET data = ?, data_encoding = ?, version = ? WHERE metadata_partition = ? AND cluster_name = ?`
getClusterMetadataQry = `SELECT data, data_encoding, version FROM cluster_metadata_info WHERE metadata_partition = ? AND cluster_name = ?`
getClusterMetadataBase = `SELECT data, data_encoding, version FROM cluster_metadata_info `
getClusterMetadataQry = getClusterMetadataBase + `WHERE metadata_partition = ? AND cluster_name = ?`
listClusterMetadataQry = getClusterMetadataBase + `WHERE metadata_partition = ? ORDER BY cluster_name LIMIT ?`
listClusterMetadataRangeQry = getClusterMetadataBase + `WHERE metadata_partition = ? AND cluster_name > ? ORDER BY cluster_name LIMIT ?`
writeLockGetClusterMetadataQry = getClusterMetadataQry
deleteClusterMetadataQry = `DELETE FROM cluster_metadata_info WHERE metadata_partition = ? AND cluster_name = ?`
@@ -129,6 +132,32 @@ func (mdb *db) SaveClusterMetadata(
)
}
func (mdb *db) ListClusterMetadata(
ctx context.Context,
filter *sqlplugin.ClusterMetadataFilter,
) ([]sqlplugin.ClusterMetadataRow, error) {
var err error
var rows []sqlplugin.ClusterMetadataRow
switch {
case len(filter.ClusterName) != 0:
err = mdb.conn.SelectContext(ctx,
&rows,
listClusterMetadataRangeQry,
constMetadataPartition,
filter.ClusterName,
filter.PageSize,
)
default:
err = mdb.conn.SelectContext(ctx,
&rows,
listClusterMetadataQry,
constMetadataPartition,
filter.PageSize,
)
}
return rows, err
}
func (mdb *db) GetClusterMetadataV1(ctx context.Context) (*sqlplugin.ClusterMetadataRow, error) {
var row sqlplugin.ClusterMetadataRow
err := mdb.conn.GetContext(ctx,
@@ -140,6 +169,7 @@ func (mdb *db) GetClusterMetadataV1(ctx context.Context) (*sqlplugin.ClusterMeta
return nil, err
}
return &row, err
}
func (mdb *db) GetClusterMetadata(