mirror of
https://github.com/Portabase/agent.git
synced 2026-09-10 01:57:10 +00:00
259 lines
5.0 KiB
SQL
259 lines
5.0 KiB
SQL
SET SQL DIALECT 3;
|
||
SET BAIL ON;
|
||
SET AUTODDL OFF;
|
||
|
||
CREATE TABLE users (
|
||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||
email VARCHAR(255) NOT NULL UNIQUE,
|
||
name VARCHAR(255),
|
||
payload BLOB SUB_TYPE TEXT,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
INSERT INTO users (email, name, payload)
|
||
VALUES ('alice@example.com', 'Alice', 'Alice seed data');
|
||
|
||
INSERT INTO users (email, name, payload)
|
||
VALUES ('bob@example.com', 'Bob', 'Bob seed data');
|
||
|
||
COMMIT;
|
||
|
||
/*
|
||
* Each procedure call generates approximately 128 MiB:
|
||
*
|
||
* 128 rows
|
||
* × 128 chunks per row
|
||
* × 8191 bytes per chunk
|
||
* = approximately 128 MiB
|
||
*
|
||
* 40 calls = approximately 5 GiB.
|
||
*/
|
||
|
||
SET TERM ^;
|
||
|
||
CREATE PROCEDURE seed_users_batch (
|
||
p_rows INTEGER,
|
||
p_chunks_per_row INTEGER
|
||
)
|
||
AS
|
||
DECLARE VARIABLE v_row_index INTEGER;
|
||
DECLARE VARIABLE v_chunk_index INTEGER;
|
||
DECLARE VARIABLE v_uuid VARCHAR(36);
|
||
DECLARE VARIABLE v_chunk VARCHAR(8191);
|
||
DECLARE VARIABLE v_payload BLOB SUB_TYPE TEXT;
|
||
BEGIN
|
||
v_row_index = 0;
|
||
|
||
WHILE (v_row_index < p_rows) DO
|
||
BEGIN
|
||
v_payload = NULL;
|
||
v_chunk_index = 0;
|
||
|
||
WHILE (v_chunk_index < p_chunks_per_row) DO
|
||
BEGIN
|
||
/*
|
||
* Generate a different chunk to avoid producing a completely
|
||
* uniform BLOB.
|
||
*/
|
||
v_chunk = RPAD(
|
||
UUID_TO_CHAR(GEN_UUID()),
|
||
8191,
|
||
UUID_TO_CHAR(GEN_UUID())
|
||
);
|
||
|
||
v_payload = BLOB_APPEND(v_payload, v_chunk);
|
||
v_chunk_index = v_chunk_index + 1;
|
||
END
|
||
|
||
v_uuid = UUID_TO_CHAR(GEN_UUID());
|
||
|
||
INSERT INTO users (
|
||
email,
|
||
name,
|
||
payload
|
||
)
|
||
VALUES (
|
||
:v_uuid || '@example.test',
|
||
'Seed User ' || :v_uuid,
|
||
:v_payload
|
||
);
|
||
|
||
v_row_index = v_row_index + 1;
|
||
END
|
||
END^
|
||
|
||
SET TERM ;^
|
||
|
||
/* Batch 01 — approximately 128 MiB */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 02 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 03 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 04 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 05 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 06 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 07 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 08 — approximately 1 GiB total */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 09 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 10 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 11 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 12 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 13 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 14 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 15 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 16 — approximately 2 GiB total */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 17 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 18 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 19 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 20 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 21 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 22 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 23 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 24 — approximately 3 GiB total */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 25 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 26 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 27 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 28 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 29 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 30 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 31 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 32 — approximately 4 GiB total */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 33 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 34 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 35 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 36 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 37 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 38 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 39 */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
/* Batch 40 — approximately 5 GiB total */
|
||
EXECUTE PROCEDURE seed_users_batch(128, 128);
|
||
COMMIT;
|
||
|
||
DROP PROCEDURE seed_users_batch;
|
||
|
||
COMMIT;
|
||
|
||
SELECT
|
||
COUNT(*) AS user_count,
|
||
CAST(SUM(OCTET_LENGTH(payload)) / 1073741824.0 AS DECIMAL(18, 2))
|
||
AS payload_size_gib
|
||
FROM users;
|
||
|
||
COMMIT; |