czytałem ponad Instagrams sharding solution i zauważyłem następujący wiersz:Co oznacza %% w PL/pgSQL?
SELECT nextval('insta5.table_id_seq') %% 1024 INTO seq_id;
Czego %% w linii SELECT powyżej zrobić? Sprawdziłem PostgreSQL i jedyną rzeczą jaką odkryłem było to, że %% jest używane, gdy chcesz użyć dosłownie procentowego znaku.
CREATE OR REPLACE FUNCTION insta5.next_id(OUT result bigint) AS $$
DECLARE
our_epoch bigint := 1314220021721;
seq_id bigint;
now_millis bigint;
shard_id int := 5;
BEGIN
SELECT nextval('insta5.table_id_seq') %% 1024 INTO seq_id;
SELECT FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 1000) INTO now_millis;
result := (now_millis - our_epoch) << 23;
result := result | (shard_id << 10);
result := result | (seq_id);
END;
$$ LANGUAGE PLPGSQL;
pewno * patrzy * jak jest on używany jak operator mod ale myślałem mod był tylko jeden '%' – Brad
Domyślam się, że dany CMS nie lubisz pojedyncze '%' i że autor próbował uciec z niego poprzez podwojenie go. (lub jeszcze gorzej: CMS ucieka przez podwojenie go na wyjściu) – joop
Normalnie ['%%' byłby operatorem jednokierunkowym z 'hstore'] (http://www.postgresql.org/docs/current/static/hstore .html), ale nie wydaje się, aby tak było w tym przypadku, jak wskazał @pozs. Może jakiś niestandardowy operator w swojej instalacji? –