2
0

Fix selecting empty array

Failing test was in pgx: TestReadingValueAfterEmptyArray
This commit is contained in:
Jack Christensen
2020-09-05 10:56:22 -05:00
parent 79b05217d1
commit 9da6afcad7
24 changed files with 27 additions and 27 deletions
+1 -1
View File
@@ -190,7 +190,7 @@ func (dst ACLItemArray) Get() interface{} {
func (src *ACLItemArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst BoolArray) Get() interface{} {
func (src *BoolArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst BPCharArray) Get() interface{} {
func (src *BPCharArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -173,7 +173,7 @@ func (dst ByteaArray) Get() interface{} {
func (src *ByteaArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -212,7 +212,7 @@ func (dst CIDRArray) Get() interface{} {
func (src *CIDRArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -193,7 +193,7 @@ func (dst DateArray) Get() interface{} {
func (src *DateArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -190,7 +190,7 @@ func (dst EnumArray) Get() interface{} {
func (src *EnumArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst Float4Array) Get() interface{} {
func (src *Float4Array) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst Float8Array) Get() interface{} {
func (src *Float8Array) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -173,7 +173,7 @@ func (dst HstoreArray) Get() interface{} {
func (src *HstoreArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -212,7 +212,7 @@ func (dst InetArray) Get() interface{} {
func (src *InetArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -458,7 +458,7 @@ func (dst Int2Array) Get() interface{} {
func (src *Int2Array) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -458,7 +458,7 @@ func (dst Int4Array) Get() interface{} {
func (src *Int4Array) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -458,7 +458,7 @@ func (dst Int8Array) Get() interface{} {
func (src *Int8Array) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst JSONBArray) Get() interface{} {
func (src *JSONBArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -193,7 +193,7 @@ func (dst MacaddrArray) Get() interface{} {
func (src *MacaddrArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -306,7 +306,7 @@ func (dst NumericArray) Get() interface{} {
func (src *NumericArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst TextArray) Get() interface{} {
func (src *TextArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -193,7 +193,7 @@ func (dst TimestampArray) Get() interface{} {
func (src *TimestampArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -193,7 +193,7 @@ func (dst TimestamptzArray) Get() interface{} {
func (src *TimestamptzArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -154,7 +154,7 @@ func (dst TstzrangeArray) Get() interface{} {
func (src *TstzrangeArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+4 -4
View File
@@ -134,7 +134,7 @@ func (dst *<%= pgtype_array_type %>) setRecursive(value reflect.Value, index, di
if len(dst.Dimensions) == dimension {
break
}
valueLen := value.Len()
if int32(valueLen) != dst.Dimensions[dimension].Length {
return 0, errors.Errorf("multidimensional arrays must have array expressions with matching dimensions")
@@ -174,7 +174,7 @@ func (dst <%= pgtype_array_type %>) Get() interface{} {
func (src *<%= pgtype_array_type %>) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1{
if len(src.Dimensions) <= 1{
// Attempt to match to select common types:
switch v := dst.(type) {
<% go_array_types.split(",").each do |t| %>
@@ -189,7 +189,7 @@ func (src *<%= pgtype_array_type %>) AssignTo(dst interface{}) error {
<% end %>
}
}
// Fallback to reflection if an optimised match was not found.
// The reflection is necessary for arrays and multidimensional slices,
// but it comes with a 20-50% performance penalty for large arrays/slices
@@ -211,7 +211,7 @@ func (src *<%= pgtype_array_type %>) AssignTo(dst interface{}) error {
if elementCount != len(src.Elements) {
return errors.Errorf("cannot assign %v, needed to assign %d elements, but only assigned %d", dst, len(src.Elements), elementCount)
}
return nil
case Null:
return NullAssignTo(dst)
+1 -1
View File
@@ -230,7 +230,7 @@ func (dst UUIDArray) Get() interface{} {
func (src *UUIDArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {
+1 -1
View File
@@ -192,7 +192,7 @@ func (dst VarcharArray) Get() interface{} {
func (src *VarcharArray) AssignTo(dst interface{}) error {
switch src.Status {
case Present:
if len(src.Dimensions) == 1 {
if len(src.Dimensions) <= 1 {
// Attempt to match to select common types:
switch v := dst.(type) {