• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stephenafamo / bob
48%
main: 48%

Build:
Build:
LAST BUILD BRANCH: loader-dedup
DEFAULT BRANCH: main
Repo Added 01 Aug 2022 08:04AM UTC
Files 252
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH perf/copy-matching-rows-map
branch: perf/copy-matching-rows-map
CHANGE BRANCH
x
Reset
  • perf/copy-matching-rows-map
  • 497-match-by-regex
  • 500-unset-fields
  • 510-relations
  • ability-to-use-in-and-notin-where-mods-with-empty-values
  • add-support-for-custom-types-in-models-dir-v0.30
  • alias-starter
  • alias-warn
  • alias-where
  • allow-as-method-on-dialect.select
  • antlr-visitor-improvments
  • apply-limit-in-bob.one
  • assign-set-expression
  • atlas-int32
  • augment-generated-queries
  • augmented-generated-queries-followup
  • bind-named-args
  • bob-file-suffix
  • bobgen-psql-performance
  • bobgen-sql
  • bugfix-658
  • bugfix/missing-primary-key-schema-alias
  • chores
  • claude/fix-required-field-factory-NLRCC
  • codegen-driver
  • codex/random-factory-imports
  • cols-in-insertq
  • column-limits
  • combined-query-fix
  • decimal-compare
  • deps
  • discussion-branch-679
  • docs
  • docs-update
  • empty-in-null
  • enum-name
  • enum-symbols
  • enum-var
  • enums-in-queries
  • error-empty-set
  • existing_relations
  • expr_plus_operator
  • feat/add-beforeupdatesetter-hook
  • feat/add-each-executor
  • feat/bobgen-sql-custom-image
  • feat/column-order-config
  • feat/columns-expr-expressions
  • feat/configure_enum_format
  • feat/conflict-target-helper
  • feat/counts-grouped-by
  • feat/disable-alias-for-build-columns
  • feat/excluded-helper
  • feat/multiple-from-using-psql
  • feat/psql-from-tablesample
  • feat/psql-grouping-elements
  • feat/psql-join-using-alias
  • feat/setcols-clause-sqlite
  • feat/sub-query-expression
  • feat/unqualified-columns-changelog
  • feat/update-to-1.24
  • feat/values-query
  • feat/view-name-expr
  • feat/view-table-name-columns-expr
  • feat_comment_tag
  • feat_older_pg
  • feature/allow-changing-alias-of-table-ref
  • feature/allow-retrieve-alias-field-from-view
  • feature/grouped-hooks
  • feature/merge-parser-support
  • feature/new-type-system-aarondl-null-and-pointers
  • feature/prepare-named-bind
  • feature/quote-unquoted-api
  • feature/returning-with-old-new-aliases
  • feature/table-queries
  • feature/where-or-and
  • features/query-hooks
  • filter-marshal
  • fix-143
  • fix-443
  • fix-alias-clash
  • fix-cte-col-alias
  • fix-cte-parenthesis
  • fix-enum-types-match-by-db_type
  • fix-factory-rels
  • fix-issue-with-count-tag
  • fix-issues-related-to-count-loading
  • fix-join-using
  • fix-named-group
  • fix-not-able-to-retrieve-rows
  • fix-setter-if-relationships
  • fix-update/delete-all
  • fix/103-generated-rel-bug
  • fix/112-join-alias
  • fix/113-multi-fk
  • fix/119-many-to-many-load-bug
  • fix/730-unused-uuid-import
  • fix/better-go-version
  • fix/bytea-cmp
  • fix/column-order-star-type-mismatch
  • fix/coveralls
  • fix/factory-circular-reference-stack-overflow
  • fix/func-as
  • fix/issue-693-for-update-of
  • fix/issue-719-randint-overflow
  • fix/missing-base-type-imports-in-to-optional
  • fix/missing-pk-in-update
  • fix/mysql-getinserted-explicit-columns
  • fix/mysql-setter-invalid-expression
  • fix/netip-import
  • fix/pgx-json-simple-protocol-
  • fix/pgx-tx-commit-error
  • fix/psql-from-join-chains
  • fix/psql-from-merge-joins
  • fix/psql-searchbreadth-cte
  • fix/psql-view-exists
  • fix/query-clone-scanner
  • fix/run-in-tx-panic-rollback
  • fix/setter-per-column-insert-values
  • fix/sql-identifier-quoting-v2
  • fix/stmt-rows-leak
  • fixes
  • flexible-conflict-mod
  • generate-error-constants-for-unique-index
  • goland-type-inference
  • implicit-fk
  • improve-generated-join
  • in-package-types
  • inet
  • issue-574
  • issue-585
  • issue-610
  • join-helpers-context-remove
  • libsql-support
  • load-refactor
  • main
  • mappings-pkg
  • materialized-views-psql
  • merge-psql-operation
  • minor-doc-updates
  • mod-values
  • mysql-compound-query
  • mysql-file
  • mysql-fulltype
  • mysql-keyword-id
  • mysql-queries
  • mysql-querygen
  • mysql-retrieval
  • mysql-union
  • names-only-for-gen-templates
  • ncruces
  • nest-to-one
  • nested-factory-rels
  • nested-query
  • netip-prefix
  • nil-model-slice
  • no-factory-docs
  • non-cgo-pg-parse
  • null-index-sort
  • null-system-config
  • omit-redundant-table-alias
  • op
  • opt-system
  • other-lang-gen
  • patch-1
  • perf/after-preloader-generics
  • perf/loader-eq-any
  • perf/loader-eq-any-composite_index
  • perf/loader-map-stitch
  • perf/loader-preload-buffer-reuse
  • perf/loader-through-mapper-byindex
  • perf/loader-typed-scan
  • pgvector
  • pgx-improve
  • pgx-tx
  • pk-columns
  • plugins-galore
  • postgres-delete
  • prefix-annotation
  • preload-bug
  • preload-typed-maper
  • psql-case-sensitive
  • psql-many-load
  • psql-select-combined-args
  • psql-update-query
  • queries
  • query-caching
  • query-gen-testing
  • query-improvements
  • query-test-hook
  • random
  • randomize-test-fixes
  • refactor-table-methods
  • refactor/merge-when-chain-api
  • refactor/mm-merge-mods
  • refs/tags/0.6.0
  • refs/tags/v0.10.0
  • refs/tags/v0.10.1
  • refs/tags/v0.11.0
  • refs/tags/v0.12.0
  • refs/tags/v0.12.1
  • refs/tags/v0.13.0
  • refs/tags/v0.14.0
  • refs/tags/v0.14.1
  • refs/tags/v0.15.0
  • refs/tags/v0.15.2
  • refs/tags/v0.15.3
  • refs/tags/v0.15.4
  • refs/tags/v0.15.5
  • refs/tags/v0.15.6
  • refs/tags/v0.16.0
  • refs/tags/v0.17.0
  • refs/tags/v0.17.1
  • refs/tags/v0.17.2
  • refs/tags/v0.17.3
  • refs/tags/v0.18.0
  • refs/tags/v0.18.1
  • refs/tags/v0.18.2
  • refs/tags/v0.19.0
  • refs/tags/v0.19.1
  • refs/tags/v0.2.0
  • refs/tags/v0.2.1
  • refs/tags/v0.2.2
  • refs/tags/v0.2.3
  • refs/tags/v0.20.0
  • refs/tags/v0.20.1
  • refs/tags/v0.20.2
  • refs/tags/v0.20.3
  • refs/tags/v0.20.4
  • refs/tags/v0.20.5
  • refs/tags/v0.20.6
  • refs/tags/v0.21.0
  • refs/tags/v0.21.1
  • refs/tags/v0.22.0
  • refs/tags/v0.23.0
  • refs/tags/v0.23.1
  • refs/tags/v0.23.2
  • refs/tags/v0.24.0
  • refs/tags/v0.25.0
  • refs/tags/v0.26.0
  • refs/tags/v0.26.1
  • refs/tags/v0.3.0
  • refs/tags/v0.3.1
  • refs/tags/v0.4.0
  • refs/tags/v0.5.1
  • refs/tags/v0.6.0
  • refs/tags/v0.6.1
  • refs/tags/v0.6.2
  • refs/tags/v0.7.1
  • refs/tags/v0.8.0
  • refs/tags/v0.8.1
  • refs/tags/v0.9.0
  • refs/tags/v0.9.1
  • related-where
  • relation-count-improvements
  • relation-counting
  • remove-unqualified-for-generated-colums
  • scan-by-index
  • schema-in-preload
  • semi-join
  • setter-insert-mod
  • spec-preload-dedup-cache
  • sql-pattern
  • sqlite-delete
  • sqlite-insert
  • sqlite-int
  • sqlite-update
  • stdlib-null
  • string-writer
  • subquery-parenthesis
  • template-restructure
  • testing
  • track-relationship-loading
  • types
  • types-compare
  • uint64
  • um-set
  • unique-alias-for-preloaders
  • uniques
  • update-docs
  • wrap-marshallable-types

12 Jul 2026 03:58AM UTC coverage: 47.674% (-0.03%) from 47.707%
29179017047

Pull #729

github

sandonemaki
perf(gen): match copyMatchingRows rows via a map keyed by the primary key

The generated copyMatchingRows (used by UpdateAll, DeleteAll, ReloadAll
and MergeMod to stitch RETURNING rows back into the slice) matched every
slice element against every returned row in a nested loop — O(N×M)
primary-key comparisons, ~25 million for a 5,000-row UpdateAll.

When the table has a single primary key column whose type is comparable
with ==, build a map from the returned rows keyed by the primary key
(keeping the first row per key, like the nested loop's break) and stitch
in O(N+M). Composite primary keys and custom compare_expr types keep the
previous nested loop, mirroring the gating used by the relationship
loader map-stitch (#706).

Standalone benchmark of the two generated shapes (N slice rows matched
against M=N returned rows):

    N=100    4.5µs  →  20µs   (map alloc dominates, negligible vs the query)
    N=1000   411µs  →  215µs  (1.9x)
    N=5000   26.1ms →  1.1ms  (23x)
Pull Request #729: perf(gen): stitch copyMatchingRows via a map keyed by the primary key (O(N×M) → O(N+M))

11849 of 24854 relevant lines covered (47.67%)

728.58 hits per line

Relevant lines Covered
Build:
Build:
24854 RELEVANT LINES 11849 COVERED LINES
728.58 HITS PER LINE
Source Files on perf/copy-matching-rows-map
  • Tree
  • List 252
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
29179017047 perf/copy-matching-rows-map perf(gen): match copyMatchingRows rows via a map keyed by the primary key The generated copyMatchingRows (used by UpdateAll, DeleteAll, ReloadAll and MergeMod to stitch RETURNING rows back into the slice) matched every slice element against every... Pull #729 12 Jul 2026 04:07AM UTC sandonemaki github
47.67
See All Builds (1261)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc