You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I am currently having to construct a JSON file containing three things. Instances, versions and function names.
Each instance has a version, each version has multiple function names.
Therefore, each 'version' is an array. Each 'instance' has multiple versions.
In pseudocode, I would append each 'function name' to an array (which will be 'version'), and then I would set a key within 'instance' to the 'version', which holds this array of 'function name'.
The problem is that I can't for the life of me figure out how to use the ArenaPool approach to make this safe. It would appear I am always ending up with the 'version' array containing the entries of the last for loop that has been iterated through.
See the following code:
instances := []Stat{}
versions := []Stat{}
functions := []Stat{}
var ap fastjson.ArenaPool
are := ap.Get()
verJSON := are.NewObject()
instJSON := are.NewObject()
err := sts.db.Select(&instances, "select distinct on (instance) instance from stats")
if err != nil {
[handle error]
return nil, err
}
for _, inst := range instances {
err := sts.db.Select(&versions, "select distinct on (version) version from stats WHERE instance = $1", inst.Instance)
if err != nil {
[handle error]
return nil, err
}
for _, ver := range versions {
err := sts.db.Select(&functions, "select distinct on (func_name) func_name from stats where instance = $1 and version = $2", inst.Instance, ver.Version)
if err != nil {
[handle error]
return nil, err
}
newAr := ap.Get()
defer ap.Put(newAr)
arr := newAr.NewArray()
for i, fun := range functions {
arr.SetArrayItem(i, newAr.NewString(fun.FuncName))
}
verJSON.Set(ver.Version, arr)
functions = nil
instJSON.Set(inst.Instance, verJSON)
}
versions = nil
}
fmt.Println("This is instJSON: ", instJSON)
'instJSON' always ends up containing the 'verJSON' from the second to last and last loop of 'range instances'.
The text was updated successfully, but these errors were encountered:
Hi, I am currently having to construct a JSON file containing three things. Instances, versions and function names.
Each instance has a version, each version has multiple function names.
Therefore, each 'version' is an array. Each 'instance' has multiple versions.
In pseudocode, I would append each 'function name' to an array (which will be 'version'), and then I would set a key within 'instance' to the 'version', which holds this array of 'function name'.
The problem is that I can't for the life of me figure out how to use the ArenaPool approach to make this safe. It would appear I am always ending up with the 'version' array containing the entries of the last for loop that has been iterated through.
See the following code:
'instJSON' always ends up containing the 'verJSON' from the second to last and last loop of 'range instances'.
The text was updated successfully, but these errors were encountered: