Project

General

Profile

7061-3.patch

Radu Apetrii, 03/01/2023 03:42 AM

Download (2.92 KB)

View differences:

new/src/com/goldencode/p2j/persist/AdaptiveQuery.java 2023-03-01 08:02:39 +0000
531 531
   /** Determines if this will be unregistered from ChangeBroker on cleanup. */
532 532
   private boolean unregisterOnCleanup = false;
533 533
   
534
   /** 
535
    * Flag determining if this query tried to register as a listener, so the registration 
536
    * won't happen twice. 
537
    */
538
   private boolean triedRegisteringAsListener = false;
539
   
534 540
   /**
535 541
    * Default constructor. Initialization is deferred until <code>initialize()</code> is
536 542
    * called.
......
559 565
      
560 566
      adapter = new ResultsAdapter(new ResultsSource());
561 567
      
562
      ChangeBroker.get().addListener(this);
563
      
564 568
      TransactionManager.registerOffEndQuery(this);
565 569
      
566 570
      return this;
......
592 596
      
593 597
      adapter = new ResultsAdapter(new ResultsSource());
594 598
      
595
      ChangeBroker.get().addListener(this);
596
      
597 599
      TransactionManager.registerOffEndQuery(this);
598 600
      
599 601
      return this;
......
665 667
         addWhereExpression(whereExpr);
666 668
      }
667 669
      
668
      ChangeBroker.get().addListener(this);
669
//      buffer persistence may not be active yet - what do we do? what about scrolling?
670
//      if (buffer == null || !buffer.getPersistence().supportsLazyQueryResultsMode())
671
//      {
672
//         ChangeBroker.get().addListener(this);
673
//      }
674
      
675 670
      return this;
676 671
   }
677 672
   
......
1124 1119
      {
1125 1120
         registerRecordChangeListeners(scope);
1126 1121
      }
1122
      
1123
      // This registration section is now here because the intention is to add this query as a listener 
1124
      // conditionally.
1125
      // Queries over temporary tables that are non-scrolling have their invalidation dealt with by the
1126
      // lazy mechanism, so there is no need to register them as listeners.
1127
      // It is no longer in initialize() because it was not guaranteed that an active buffer can be found
1128
      // there.
1129
      if (!triedRegisteringAsListener)
1130
      {
1131
         triedRegisteringAsListener = true;
1132
         RecordBuffer buffer = (buffers != null && buffers.length > 0) ? buffers[0] : null;
1133
         
1134
         if (buffer == null || !buffer.getPersistence().supportsLazyQueryResultsMode() 
1135
                            || isScrolling())
1136
         {
1137
            ChangeBroker.get().addListener(this);
1138
         }   
1139
      }
1127 1140

  
1128 1141
      if (cursor != null)
1129 1142
      {
......
2237 2250
   throws PersistenceException
2238 2251
   {      
2239 2252
      ArrayList<QueryComponent> components = components();
2240
      // rather check persistence if supports this
2241
      if (components.size() == 1 && components.get(0).getBuffer().isTemporary() && !isScrolling())
2242
      {
2243
         return;
2244
      }
2245 2253
      boolean preselect = isPreselect();
2246 2254
      boolean invalidate = true;
2247 2255
      boolean cacheAll = false;