this post was submitted on 25 Jul 2023
45 points (94.1% liked)

Rust Programming

8011 readers
1 users here now

founded 5 years ago
MODERATORS
 

We have an urgent performance problem to get finished. The SQL changes are fine, but it seems the Lemmy test code in Rust is defective. This test is failing after we fixed a faulty stored procedure function in PostgreSQL: https://github.com/LemmyNet/lemmy/blob/13a866aeb0c24f20ed18ab40c0ea5616ef910676/crates/db_schema/src/aggregates/site_aggregates.rs#L157

The underlying Rust code needs to be enhanced to query the SQL table with SELECT site_aggregates WHERE site_id = 1, hard-coded 1 is fine, that is always the local site in Lemmy.

Can you please detail all the code changes so that the read method takes an integer parameter for site_id field?

https://github.com/LemmyNet/lemmy/blob/13a866aeb0c24f20ed18ab40c0ea5616ef910676/crates/db_schema/src/aggregates/site_aggregates.rs#L10C7-L10C7

Right now the query has no WHERE clause, pulling the first row it gets. Thank you.

top 5 comments
sorted by: hot top controversial new old
[–] anage_oldprob@lemmy.world 8 points 1 year ago* (last edited 1 year ago) (1 children)

Looking at the diesel docs it should be site_aggregates::table.filter(site_aggregates::site_id.eq(1)).load(…

https://diesel.rs/ see the third example

[–] RoundSparrow@lemmy.ml 4 points 1 year ago (1 children)
site_aggregates::table.filter(site_aggregates::site_id.eq(1)).first::<Self>(conn).await
    |                                                            ^^ `schema::site_aggregates::columns::site_id` is not an iterator


[–] anage_oldprob@lemmy.world 6 points 1 year ago (2 children)

Try site_aggregates::dsl::site_id.eq(1).

[–] RoundSparrow@lemmy.ml 4 points 1 year ago

second reply.

Going over both error messages again, found this: https://stackoverflow.com/questions/70389667/rust-diesel-method-filter-exists-for-schema-table-but-its-trait-bounds-were-n

seems adding:

use diesel::prelude::*;

Might be helping. This compiles now:

    site_aggregates::table.filter(site_aggregates::site_id.eq(1)).first::<Self>(conn).await

[–] RoundSparrow@lemmy.ml 3 points 1 year ago
   --> crates/db_schema/src/aggregates/site_aggregates.rs:12:35
    |
12  |     site_aggregates::dsl::site_id.eq(1).first::<Self>(conn).await
    |                                   ^^ `schema::site_aggregates::columns::site_id` is not an iterator
    |
   ::: crates/db_schema/src/schema.rs:817:9
    |
817 |         site_id -> Int4,
    |         -------
    |         |
    |         method `eq` not found for this struct
    |         doesn't satisfy `_: Iterator`
    |
    = note: the following trait bounds were not satisfied:
            `schema::site_aggregates::columns::site_id: Iterator`
            which is required by `&mut schema::site_aggregates::columns::site_id: Iterator`
load more comments
view more: next ›