Skip to content

Commit

Permalink
fix: Added column size calculation based on type or column size
Browse files Browse the repository at this point in the history
* Implemented GetColumnSize method for Column object
* Fixed RandomInt, NoiseInt, NoiseFloat, RandomFloat implementation
* Fixed unit tests
  • Loading branch information
wwoytenko committed May 15, 2024
1 parent f46faf4 commit b4cd0a6
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 106 deletions.
5 changes: 1 addition & 4 deletions internal/db/postgres/transformers/noise_float.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ func NewNoiseFloatTransformer(ctx context.Context, driver *toolkit.Driver, param
var dynamicMode bool
var minValueThreshold, maxValueThreshold, minRatio, maxRatio float64
var precision int
floatSize := 8

columnParam := parameters["column"]
minParam := parameters["min"]
Expand Down Expand Up @@ -124,9 +123,7 @@ func NewNoiseFloatTransformer(ctx context.Context, driver *toolkit.Driver, param
}
affectedColumns := make(map[int]string)
affectedColumns[idx] = columnName
if c.Length != -1 {
floatSize = c.Length
}
floatSize := c.GetColumnSize()

if !dynamicMode {
if err := minParam.Scan(&minValueThreshold); err != nil {
Expand Down
5 changes: 1 addition & 4 deletions internal/db/postgres/transformers/noise_int.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ func NewNoiseIntTransformer(ctx context.Context, driver *toolkit.Driver, paramet
var columnName, engine string
var minRatio, maxRatio float64
var maxValueThreshold, minValueThreshold int64
var intSize int
var dynamicMode bool

columnParam := parameters["column"]
Expand All @@ -110,9 +109,7 @@ func NewNoiseIntTransformer(ctx context.Context, driver *toolkit.Driver, paramet
affectedColumns := make(map[int]string)
affectedColumns[idx] = columnName

if c.Length != -1 {
intSize = c.Length
}
intSize := c.GetColumnSize()

if minParam.IsDynamic() || maxParam.IsDynamic() {
dynamicMode = true
Expand Down
5 changes: 1 addition & 4 deletions internal/db/postgres/transformers/random_float.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ func NewFloatTransformer(ctx context.Context, driver *toolkit.Driver, parameters
var minVal, maxVal float64
var keepNull, dynamicMode bool
var precision int
floatSize := 8

columnParam := parameters["column"]
minParam := parameters["min"]
Expand All @@ -129,9 +128,7 @@ func NewFloatTransformer(ctx context.Context, driver *toolkit.Driver, parameters
}
affectedColumns := make(map[int]string)
affectedColumns[idx] = columnName
if c.Length != -1 {
floatSize = c.Length
}
floatSize := c.GetColumnSize()

if err := keepNullParam.Scan(&keepNull); err != nil {
return nil, nil, fmt.Errorf(`unable to scan "keep_null" param: %w`, err)
Expand Down
5 changes: 1 addition & 4 deletions internal/db/postgres/transformers/random_int.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ func NewIntegerTransformer(ctx context.Context, driver *toolkit.Driver, paramete
var columnName, engine string
var minVal, maxVal int64
var keepNull, dynamicMode bool
var intSize = 8

columnParam := parameters["column"]
minParam := parameters["min"]
Expand All @@ -119,9 +118,7 @@ func NewIntegerTransformer(ctx context.Context, driver *toolkit.Driver, paramete
}
affectedColumns := make(map[int]string)
affectedColumns[idx] = columnName
if c.Length != -1 {
intSize = c.Length
}
intSize := c.GetColumnSize()

if err := keepNullParam.Scan(&keepNull); err != nil {
return nil, nil, fmt.Errorf(`unable to scan "keep_null" param: %w`, err)
Expand Down
192 changes: 102 additions & 90 deletions internal/db/postgres/transformers/tesing_helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,84 +25,94 @@ import (

var columnList = []*toolkit.Column{
{
Name: "id",
TypeName: "int2",
TypeOid: pgtype.Int2OID,
Num: 1,
NotNull: false,
Length: 2,
},
{
Name: "created_at",
TypeName: "timestamp",
TypeOid: pgtype.TimestampOID,
Num: 2,
NotNull: false,
Length: -1,
},
{
Name: "data",
TypeName: "text",
TypeOid: pgtype.TextOID,
Num: 3,
NotNull: false,
Length: -1,
},
{
Name: "doc",
TypeName: "jsonb",
TypeOid: pgtype.JSONBOID,
Num: 4,
NotNull: false,
Length: -1,
},
{
Name: "uid",
TypeName: "uuid",
TypeOid: pgtype.UUIDOID,
Num: 5,
NotNull: false,
Length: -1,
},
{
Name: "id2",
TypeName: "int2",
TypeOid: pgtype.Int2OID,
Num: 6,
NotNull: false,
Length: 2,
},
{
Name: "id4",
TypeName: "int4",
TypeOid: pgtype.Int4OID,
Num: 7,
NotNull: false,
Length: 4,
},
{
Name: "id8",
TypeName: "int8",
TypeOid: pgtype.Int8OID,
Num: 8,
NotNull: false,
Length: 8,
},
{
Name: "date_date",
TypeName: "date",
TypeOid: pgtype.DateOID,
Num: 9,
NotNull: false,
Length: -1,
},
{
Name: "date_ts",
TypeName: "timestamp",
TypeOid: pgtype.TimestampOID,
Num: 10,
NotNull: false,
Length: -1,
Name: "id",
TypeName: "int2",
TypeOid: pgtype.Int2OID,
Num: 1,
NotNull: false,
Length: -1,
TypeLength: 2,
},
{
Name: "created_at",
TypeName: "timestamp",
TypeOid: pgtype.TimestampOID,
Num: 2,
NotNull: false,
Length: -1,
TypeLength: -1,
},
{
Name: "data",
TypeName: "text",
TypeOid: pgtype.TextOID,
Num: 3,
NotNull: false,
Length: -1,
TypeLength: -1,
},
{
Name: "doc",
TypeName: "jsonb",
TypeOid: pgtype.JSONBOID,
Num: 4,
NotNull: false,
Length: -1,
TypeLength: -1,
},
{
Name: "uid",
TypeName: "uuid",
TypeOid: pgtype.UUIDOID,
Num: 5,
NotNull: false,
Length: -1,
TypeLength: -1,
},
{
Name: "id2",
TypeName: "int2",
TypeOid: pgtype.Int2OID,
Num: 6,
NotNull: false,
TypeLength: 2,
Length: -1,
},
{
Name: "id4",
TypeName: "int4",
TypeOid: pgtype.Int4OID,
Num: 7,
NotNull: false,
Length: -1,
TypeLength: 4,
},
{
Name: "id8",
TypeName: "int8",
TypeOid: pgtype.Int8OID,
Num: 8,
NotNull: false,
TypeLength: 8,
Length: -1,
},
{
Name: "date_date",
TypeName: "date",
TypeOid: pgtype.DateOID,
Num: 9,
NotNull: false,
Length: -1,
TypeLength: -1,
},
{
Name: "date_ts",
TypeName: "timestamp",
TypeOid: pgtype.TimestampOID,
Num: 10,
NotNull: false,
Length: -1,
TypeLength: -1,
},
{
Name: "date_tstz",
Expand All @@ -113,20 +123,22 @@ var columnList = []*toolkit.Column{
Length: -1,
},
{
Name: "col_float4",
TypeName: "float4",
TypeOid: pgtype.Float4OID,
Num: 12,
NotNull: false,
Length: -1,
Name: "col_float4",
TypeName: "float4",
TypeOid: pgtype.Float4OID,
Num: 12,
NotNull: false,
Length: -1,
TypeLength: 4,
},
{
Name: "col_float8",
TypeName: "float8",
TypeOid: pgtype.Float8OID,
Num: 13,
NotNull: false,
Length: -1,
Name: "col_float8",
TypeName: "float8",
TypeOid: pgtype.Float8OID,
Num: 13,
NotNull: false,
Length: -1,
TypeLength: 8,
},
{
Name: "col_bool",
Expand Down
7 changes: 7 additions & 0 deletions pkg/toolkit/column.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,10 @@ type Column struct {
OverriddenTypeName string `json:"overridden_type_name"`
OverriddenTypeOid Oid `json:"overridden_type_oid"`
}

func (c *Column) GetColumnSize() int {
if c.Length != -1 {
return c.Length
}
return c.TypeLength
}

0 comments on commit b4cd0a6

Please sign in to comment.