@@ -109,6 +109,48 @@ func (ss *SingleSelectAcquire) GetTail() primitivegraph.PrimitiveNode {
109109 return ss .root
110110}
111111
112+ //nolint:lll // chaining
113+ func (ss * SingleSelectAcquire ) elideActionIfPossible (
114+ currentTcc internaldto.TxnControlCounters ,
115+ tableName string ,
116+ reqEncoding string ,
117+ ) bool {
118+ olderTcc , isMatch := ss .handlerCtx .GetNamespaceCollection ().GetAnalyticsCacheTableNamespaceConfigurator ().Match (
119+ tableName ,
120+ reqEncoding ,
121+ ss .drmCfg .GetControlAttributes ().GetControlLatestUpdateColumnName (), ss .drmCfg .GetControlAttributes ().GetControlInsertEncodedIDColumnName ())
122+ if isMatch {
123+ nonControlColumns := ss .insertPreparedStatementCtx .GetNonControlColumns ()
124+ var nonControlColumnNames []string
125+ for _ , c := range nonControlColumns {
126+ nonControlColumnNames = append (nonControlColumnNames , c .GetName ())
127+ }
128+ //nolint:errcheck // TODO: fix
129+ ss .handlerCtx .GetGarbageCollector ().Update (
130+ tableName ,
131+ olderTcc .Clone (),
132+ currentTcc ,
133+ )
134+ //nolint:errcheck // TODO: fix
135+ ss .insertionContainer .SetTableTxnCounters (tableName , olderTcc )
136+ ss .insertPreparedStatementCtx .SetGCCtrlCtrs (olderTcc )
137+ r , sqlErr := ss .handlerCtx .GetNamespaceCollection ().GetAnalyticsCacheTableNamespaceConfigurator ().Read (
138+ tableName , reqEncoding ,
139+ ss .drmCfg .GetControlAttributes ().GetControlInsertEncodedIDColumnName (),
140+ nonControlColumnNames )
141+ if sqlErr != nil {
142+ internaldto .NewErroneousExecutorOutput (sqlErr )
143+ }
144+ ss .drmCfg .ExtractObjectFromSQLRows (r , nonControlColumns , ss .stream )
145+ return true
146+ }
147+ return false
148+ }
149+
150+ func (ss * SingleSelectAcquire ) actionHTTP () error {
151+ return nil
152+ }
153+
112154//nolint:funlen,gocognit,gocyclo,cyclop,nestif,revive // TODO: investigate
113155func (ss * SingleSelectAcquire ) Build () error {
114156 prov , err := ss .tableMeta .GetProvider ()
@@ -172,31 +214,8 @@ func (ss *SingleSelectAcquire) Build() error {
172214 return internaldto .NewErroneousExecutorOutput (paramErr )
173215 }
174216 reqEncoding := reqCtx .Encode ()
175- //nolint:lll // chaining
176- olderTcc , isMatch := ss .handlerCtx .GetNamespaceCollection ().GetAnalyticsCacheTableNamespaceConfigurator ().Match (tableName , reqEncoding , ss .drmCfg .GetControlAttributes ().GetControlLatestUpdateColumnName (), ss .drmCfg .GetControlAttributes ().GetControlInsertEncodedIDColumnName ())
177- if isMatch {
178- nonControlColumns := ss .insertPreparedStatementCtx .GetNonControlColumns ()
179- var nonControlColumnNames []string
180- for _ , c := range nonControlColumns {
181- nonControlColumnNames = append (nonControlColumnNames , c .GetName ())
182- }
183- //nolint:errcheck // TODO: fix
184- ss .handlerCtx .GetGarbageCollector ().Update (
185- tableName ,
186- olderTcc .Clone (),
187- currentTcc ,
188- )
189- //nolint:errcheck // TODO: fix
190- ss .insertionContainer .SetTableTxnCounters (tableName , olderTcc )
191- ss .insertPreparedStatementCtx .SetGCCtrlCtrs (olderTcc )
192- r , sqlErr := ss .handlerCtx .GetNamespaceCollection ().GetAnalyticsCacheTableNamespaceConfigurator ().Read (
193- tableName , reqEncoding ,
194- ss .drmCfg .GetControlAttributes ().GetControlInsertEncodedIDColumnName (),
195- nonControlColumnNames )
196- if sqlErr != nil {
197- internaldto .NewErroneousExecutorOutput (sqlErr )
198- }
199- ss .drmCfg .ExtractObjectFromSQLRows (r , nonControlColumns , ss .stream )
217+ elideOk := ss .elideActionIfPossible (currentTcc , tableName , reqEncoding )
218+ if elideOk {
200219 return internaldto .NewEmptyExecutorOutput ()
201220 }
202221 // TODO: fix cloning ops
0 commit comments