stavo leggendo su Instagrams sharding solution e ho notato la seguente linea:Che cosa significa %% in PL/pgSQL significa?
SELECT nextval('insta5.table_id_seq') %% 1024 INTO seq_id;
Cosa significa il %% nella linea SELEZIONA di cui sopra? Ho cercato PostgreSQL e l'unica cosa che ho trovato è che %% è utilizzato quando vuoi usare un carattere percentuale letterale.
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;
di sicuro * sembra * come se fosse utilizzato come operatore mod ma ho pensato mod è stato solo uno '%' – Brad
La mia ipotesi è che la particolare CMS non come un singolo '%' e che l'autore ha cercato di evaderlo raddoppiandolo. (o ancora peggio: il CMS lo sfugge raddoppiandolo sull'output) – joop
Normalmente ['%%' sarebbe un operatore unario da 'hstore'] (http://www.postgresql.org/docs/current/static/hstore .html) ma questo non sembra essere il caso qui come sottolineato da @pozs. Operatore personalizzato nella loro installazione, forse? –