search-engine-for-typesense 30.1.8.17 → 30.1.8.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a268323694adc2817c238b7ae9f522a7685b55b240691fb5891a98b4bc3d371
4
- data.tar.gz: 3fcdddf6f9bdd81ecca5aae6755e3d55f7d5a9fd52e50ed3ed2d5bbdaa163b53
3
+ metadata.gz: d799dd8ebda35a7687a0043fa6c2e64405ff6a4adac15756f2483ecf1c8ea963
4
+ data.tar.gz: e408f30ec0d0cab5a053866f6db1985c9dd2e369555fc9412a9321ee3ac1ba5e
5
5
  SHA512:
6
- metadata.gz: 88f09c6d71f2a6c91505b8d83e57b6e989de2f8fbbc477b7b35185996da5cb0eae918dcf3ed14f8c9f3c69760469b5da9d32da2336b5cd640bffc386e31869b0
7
- data.tar.gz: ab29408bb29a73d210aa29c3db62bb3bf684b8105a6dbe5aaf918ed299f8849b3eadb8ecb406d30db11e2353941aafb5ec8cb58ae4c180ca684ad720a5a55697
6
+ metadata.gz: 5b72688894bdb836651521e2217d305266096a18a4e616a6dc508e00c19ace5f2170baa79e127220ebd5fdb6ca21477b19a856c66d3e91b4b28d9fcec48f96d1
7
+ data.tar.gz: 13f44c384d0485688f399799efaab02645f1cc2b261359c13b7f688a853a536f9a57fc3e6fadea4fead6222114887d639ead85150184b93c2d2832cf74624d9f
@@ -42,6 +42,9 @@ module SearchEngine
42
42
  add_index table_name,
43
43
  %i[collection document_id status id],
44
44
  name: 'idx_search_engine_outbox_coalescing'
45
+ add_index table_name,
46
+ %i[collection document_id id],
47
+ name: 'idx_search_engine_outbox_coalesce_lookup'
45
48
  add_index table_name,
46
49
  :locked_at,
47
50
  name: 'idx_search_engine_outbox_processing',
@@ -470,26 +470,33 @@ module SearchEngine
470
470
 
471
471
  def materialization_supersede_older_deliveries_sql(rows, targets)
472
472
  <<~SQL
473
- WITH updated_deliveries AS (
473
+ WITH latest(collection, document_id, id) AS (
474
+ VALUES #{coalesce_values_sql(rows)}
475
+ ),
476
+ target(target_key, queue_name) AS (
477
+ VALUES #{delivery_target_values_sql(targets)}
478
+ ),
479
+ older_event_targets AS MATERIALIZED (
480
+ SELECT older_events.id AS event_id,
481
+ target.target_key
482
+ FROM latest
483
+ CROSS JOIN target
484
+ INNER JOIN #{quoted_table} older_events
485
+ ON older_events.collection = latest.collection
486
+ AND older_events.document_id = latest.document_id
487
+ AND older_events.id < latest.id
488
+ ),
489
+ updated_deliveries AS (
474
490
  UPDATE #{quoted_delivery_table} older_deliveries
475
491
  SET status = 'superseded',
476
492
  processed_at = CURRENT_TIMESTAMP,
477
493
  locked_at = NULL,
478
494
  locked_by = NULL,
479
495
  updated_at = CURRENT_TIMESTAMP
480
- FROM #{quoted_table} older_events,
481
- (
482
- VALUES #{coalesce_values_sql(rows)}
483
- ) AS latest(collection, document_id, id),
484
- (
485
- VALUES #{delivery_target_values_sql(targets)}
486
- ) AS target(target_key, queue_name)
487
- WHERE older_deliveries.event_id = older_events.id
496
+ FROM older_event_targets
497
+ WHERE older_deliveries.event_id = older_event_targets.event_id
488
498
  AND older_deliveries.status = 'pending'
489
- AND older_deliveries.target_key = target.target_key
490
- AND older_events.collection = latest.collection
491
- AND older_events.document_id = latest.document_id
492
- AND older_events.id < latest.id
499
+ AND older_deliveries.target_key = older_event_targets.target_key
493
500
  RETURNING older_deliveries.event_id
494
501
  ),
495
502
  aggregate AS (
@@ -528,23 +535,29 @@ module SearchEngine
528
535
 
529
536
  def delivery_supersede_older_pending_sql(rows)
530
537
  <<~SQL
531
- WITH updated_deliveries AS (
538
+ WITH latest(target_key, collection, document_id, event_id, delivery_id) AS (
539
+ VALUES #{delivery_coalesce_values_sql(rows)}
540
+ ),
541
+ older_event_targets AS MATERIALIZED (
542
+ SELECT older_events.id AS event_id,
543
+ latest.target_key
544
+ FROM latest
545
+ INNER JOIN #{quoted_table} older_events
546
+ ON older_events.collection = latest.collection
547
+ AND older_events.document_id = latest.document_id
548
+ AND older_events.id < latest.event_id
549
+ ),
550
+ updated_deliveries AS (
532
551
  UPDATE #{quoted_delivery_table} older_deliveries
533
552
  SET status = 'superseded',
534
553
  processed_at = CURRENT_TIMESTAMP,
535
554
  locked_at = NULL,
536
555
  locked_by = NULL,
537
556
  updated_at = CURRENT_TIMESTAMP
538
- FROM #{quoted_table} older_events,
539
- (
540
- VALUES #{delivery_coalesce_values_sql(rows)}
541
- ) AS latest(target_key, collection, document_id, event_id, delivery_id)
542
- WHERE older_deliveries.event_id = older_events.id
557
+ FROM older_event_targets
558
+ WHERE older_deliveries.event_id = older_event_targets.event_id
543
559
  AND older_deliveries.status = 'pending'
544
- AND older_deliveries.target_key = latest.target_key
545
- AND older_events.collection = latest.collection
546
- AND older_events.document_id = latest.document_id
547
- AND older_events.id < latest.event_id
560
+ AND older_deliveries.target_key = older_event_targets.target_key
548
561
  RETURNING older_deliveries.event_id
549
562
  ),
550
563
  aggregate AS (
@@ -3,5 +3,5 @@
3
3
  module SearchEngine
4
4
  # Current gem version.
5
5
  # @return [String]
6
- VERSION = '30.1.8.17'
6
+ VERSION = '30.1.8.18'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search-engine-for-typesense
3
3
  version: !ruby/object:Gem::Version
4
- version: 30.1.8.17
4
+ version: 30.1.8.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Shkoda