-- Copyright IBM Corp. 2020, 2026
-- SPDX-License-Identifier: BUSL-1.1

begin;

  select plan(8); -- the number of `is` calls

  -- short form ipv6

  insert into session_connection
  ( public_id,      session_id,     client_tcp_address,     endpoint_tcp_address,   user_client_ip)
  values
  ('sc_________1', 's1_____clare', '2001:4860:4860::8888', '2001:4860:4860::8888', '2001:4860:4860::8888');

  select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
  where client_tcp_address = '2001:4860:4860::8888';

  select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
  where endpoint_tcp_address = '2001:4860:4860::8888';

  update session_connection
    set client_tcp_address = '2001:4860:4860::8844',
      endpoint_tcp_address = '2001:4860:4860::8844',
      user_client_ip       = '2001:4860:4860::8844'
  where public_id = 'sc_________1';

  select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
  where client_tcp_address = '2001:4860:4860::8844';

  select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
  where endpoint_tcp_address = '2001:4860:4860::8844';

  -- explicit form ipv6

  insert into session_connection
  ( public_id,      session_id,     client_tcp_address,            endpoint_tcp_address,          user_client_ip)
  values
  ('sc_________2', 's2_____clare', '2001:4860:4860:0:0:0:0:8888', '2001:4860:4860:0:0:0:0:8888', '2001:4860:4860:0:0:0:0:8888');

  select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
  where client_tcp_address = '2001:4860:4860:0:0:0:0:8888';

  select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
  where endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8888';

  update session_connection
    set client_tcp_address = '2001:4860:4860:0:0:0:0:8844',
      endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8844',
      user_client_ip       = '2001:4860:4860:0:0:0:0:8844'
  where public_id = 'sc_________2';

  -- since the col type is inet, postgres actually knows that 2001:4860:4860:0:0:0:0:8844 is
  -- equivalent to 2001:4860:4860::8844 from above, meaning these selects return 2 results

  select is(count(*), 2::bigint) from wh_session_connection_accumulating_fact
  where client_tcp_address = '2001:4860:4860:0:0:0:0:8844';

  select is(count(*), 2::bigint) from wh_session_connection_accumulating_fact
  where endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8844';

rollback;
