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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d799dd8ebda35a7687a0043fa6c2e64405ff6a4adac15756f2483ecf1c8ea963
|
|
4
|
+
data.tar.gz: e408f30ec0d0cab5a053866f6db1985c9dd2e369555fc9412a9321ee3ac1ba5e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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 (
|