diff --git a/CHANGELOG.md b/CHANGELOG.md index aac2633a..7c1636bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ - Makes `OperationType` private. - Remove long deprecated method for pool management. - Removes unused `ReadN` method in `Connection`. + - Embeds Policies as values and not pointers inside `MultiPolicy`, `ScanPolicy`, `QueryPolicy` * **Minor**: - Fixes a race condition in the `AdminCommand`. diff --git a/command.go b/command.go index c3342f76..d6acc2bb 100644 --- a/command.go +++ b/command.go @@ -722,7 +722,7 @@ func (cmd *baseCommand) setScan(policy *ScanPolicy, namespace *string, setName * if binNames != nil { operationCount = len(binNames) } - cmd.writeHeader(policy.BasePolicy, readAttr, 0, fieldCount, operationCount) + cmd.writeHeader(&policy.BasePolicy, readAttr, 0, fieldCount, operationCount) if namespace != nil { cmd.writeFieldString(*namespace, NAMESPACE) @@ -876,13 +876,13 @@ func (cmd *baseCommand) setQuery(policy *QueryPolicy, statement *Statement, writ } if write { - cmd.writeHeader(policy.BasePolicy, _INFO1_READ, _INFO2_WRITE, fieldCount, operationCount) + cmd.writeHeader(&policy.BasePolicy, _INFO1_READ, _INFO2_WRITE, fieldCount, operationCount) } else { readAttr := _INFO1_READ | _INFO1_NOBINDATA if policy.IncludeBinData { readAttr = _INFO1_READ } - cmd.writeHeader(policy.BasePolicy, readAttr, 0, fieldCount, operationCount) + cmd.writeHeader(&policy.BasePolicy, readAttr, 0, fieldCount, operationCount) } if statement.Namespace != "" { diff --git a/multi_policy.go b/multi_policy.go index bcbba6b8..97f7a3e0 100644 --- a/multi_policy.go +++ b/multi_policy.go @@ -19,7 +19,7 @@ import "time" // MultiPolicy contains parameters for policy attributes used in // query and scan operations. type MultiPolicy struct { - *BasePolicy + BasePolicy // Maximum number of concurrent requests to server nodes at any poin int time. // If there are 16 nodes in the cluster and maxConcurrentNodes is 8, then queries @@ -43,7 +43,7 @@ type MultiPolicy struct { // NewMultiPolicy initializes a MultiPolicy instance with default values. func NewMultiPolicy() *MultiPolicy { - bp := NewPolicy() + bp := *NewPolicy() bp.SocketTimeout = 30 * time.Second return &MultiPolicy{ diff --git a/query_policy.go b/query_policy.go index bf3271de..0c456363 100644 --- a/query_policy.go +++ b/query_policy.go @@ -16,12 +16,12 @@ package aerospike // QueryPolicy encapsulates parameters for policy attributes used in query operations. type QueryPolicy struct { - *MultiPolicy + MultiPolicy } // NewQueryPolicy generates a new QueryPolicy instance with default values. func NewQueryPolicy() *QueryPolicy { return &QueryPolicy{ - MultiPolicy: NewMultiPolicy(), + MultiPolicy: *NewMultiPolicy(), } } diff --git a/scan_policy.go b/scan_policy.go index ec92789b..75e72c22 100644 --- a/scan_policy.go +++ b/scan_policy.go @@ -16,7 +16,7 @@ package aerospike // ScanPolicy encapsulates parameters used in scan operations. type ScanPolicy struct { - *MultiPolicy + MultiPolicy // ScanPercent determines percent of data to scan. // Valid integer range is 1 to 100. @@ -29,7 +29,7 @@ type ScanPolicy struct { // NewScanPolicy creates a new ScanPolicy instance with default values. func NewScanPolicy() *ScanPolicy { - mp := NewMultiPolicy() + mp := *NewMultiPolicy() mp.TotalTimeout = 0 return &ScanPolicy{