Highly ambitious ATProtocol AppView service and sdks

Fix uuid_nil() function calls in sqlxmq migration

Replace uuid_nil() with explicit nil UUID constant '00000000-0000-0000-0000-000000000000'::uuid
as uuid_nil() function doesn't exist in PostgreSQL's uuid-ossp extension

Changed files
+11 -11
api
+11 -11
api/migrations/004_sqlxmq_setup.sql
··· 37 37 channel_name TEXT NOT NULL, 38 38 channel_args TEXT NOT NULL, 39 39 commit_interval INTERVAL, 40 - after_message_id UUID DEFAULT uuid_nil() REFERENCES mq_msgs(id) ON DELETE SET DEFAULT 40 + after_message_id UUID DEFAULT '00000000-0000-0000-0000-000000000000'::uuid REFERENCES mq_msgs(id) ON DELETE SET DEFAULT 41 41 ); 42 42 43 43 -- Insert dummy message so that the 'nil' UUID can be referenced 44 - INSERT INTO mq_msgs (id, channel_name, channel_args, after_message_id) VALUES (uuid_nil(), '', '', NULL); 44 + INSERT INTO mq_msgs (id, channel_name, channel_args, after_message_id) VALUES ('00000000-0000-0000-0000-000000000000'::uuid, '', '', NULL); 45 45 46 46 -- Internal helper function to check that a UUID is neither NULL nor NIL 47 47 CREATE FUNCTION mq_uuid_exists( 48 48 id UUID 49 49 ) RETURNS BOOLEAN AS $$ 50 - SELECT id IS NOT NULL AND id != uuid_nil() 50 + SELECT id IS NOT NULL AND id != '00000000-0000-0000-0000-000000000000'::uuid 51 51 $$ LANGUAGE SQL IMMUTABLE; 52 52 53 53 -- Index for polling 54 - CREATE INDEX ON mq_msgs(channel_name, channel_args, attempt_at) WHERE id != uuid_nil() AND NOT mq_uuid_exists(after_message_id); 54 + CREATE INDEX ON mq_msgs(channel_name, channel_args, attempt_at) WHERE id != '00000000-0000-0000-0000-000000000000'::uuid AND NOT mq_uuid_exists(after_message_id); 55 55 -- Index for adding messages 56 - CREATE INDEX ON mq_msgs(channel_name, channel_args, created_at, id) WHERE id != uuid_nil() AND after_message_id IS NOT NULL; 56 + CREATE INDEX ON mq_msgs(channel_name, channel_args, created_at, id) WHERE id != '00000000-0000-0000-0000-000000000000'::uuid AND after_message_id IS NOT NULL; 57 57 58 58 -- Index for ensuring strict message order 59 59 CREATE UNIQUE INDEX mq_msgs_channel_name_channel_args_after_message_id_idx ON mq_msgs(channel_name, channel_args, after_message_id); ··· 76 76 WHERE channel_name = from_channel_name 77 77 AND channel_args = from_channel_args 78 78 AND after_message_id IS NOT NULL 79 - AND id != uuid_nil() 79 + AND id != '00000000-0000-0000-0000-000000000000'::uuid 80 80 ORDER BY created_at DESC, id DESC 81 81 LIMIT 1 82 82 ), 83 - uuid_nil() 83 + '00000000-0000-0000-0000-000000000000'::uuid 84 84 ) 85 85 $$ LANGUAGE SQL STABLE; 86 86 ··· 89 89 RETURNS TABLE(name TEXT, args TEXT) AS $$ 90 90 SELECT channel_name, channel_args 91 91 FROM mq_msgs 92 - WHERE id != uuid_nil() 92 + WHERE id != '00000000-0000-0000-0000-000000000000'::uuid 93 93 AND attempt_at <= NOW() 94 94 AND (channel_names IS NULL OR channel_name = ANY(channel_names)) 95 95 AND NOT mq_uuid_exists(after_message_id) ··· 121 121 FROM mq_active_channels(channel_names, batch_size) AS active_channels 122 122 INNER JOIN LATERAL ( 123 123 SELECT * FROM mq_msgs 124 - WHERE mq_msgs.id != uuid_nil() 124 + WHERE mq_msgs.id != '00000000-0000-0000-0000-000000000000'::uuid 125 125 AND mq_msgs.attempt_at <= NOW() 126 126 AND mq_msgs.channel_name = active_channels.name 127 127 AND mq_msgs.channel_args = active_channels.args ··· 152 152 NULL::INTERVAL, 153 153 MIN(mq_msgs.attempt_at) - NOW() 154 154 FROM mq_msgs 155 - WHERE mq_msgs.id != uuid_nil() 155 + WHERE mq_msgs.id != '00000000-0000-0000-0000-000000000000'::uuid 156 156 AND NOT mq_uuid_exists(mq_msgs.after_message_id) 157 157 AND (channel_names IS NULL OR mq_msgs.channel_name = ANY(channel_names)); 158 158 END IF; ··· 234 234 PERFORM pg_notify(CONCAT('mq_', channel_name), '') 235 235 FROM mq_msgs 236 236 WHERE id = ANY(msg_ids) 237 - AND after_message_id = uuid_nil() 237 + AND after_message_id = '00000000-0000-0000-0000-000000000000'::uuid 238 238 GROUP BY channel_name; 239 239 240 240 IF FOUND THEN