Merge lp:~brianlmoon/gearmand/sqlite-replace into lp:gearmand/1.0

Proposed by Brian Moon
Status: Merged
Approved by: Brian Aker
Approved revision: 334
Merged at revision: 382
Proposed branch: lp:~brianlmoon/gearmand/sqlite-replace
Merge into: lp:gearmand/1.0
Diff against target: 103 lines (+23/-8)
3 files modified
libgearman-server/queue_libdrizzle.c (+9/-3)
libgearman-server/queue_libpq.c (+9/-2)
libgearman-server/queue_libsqlite3.c (+5/-3)
To merge this branch: bzr merge lp:~brianlmoon/gearmand/sqlite-replace
Reviewer Review Type Date Requested Status
Gearman-developers Pending
Review via email: mp+23515@code.launchpad.net

Description of the change

This will make both function_name and unique_id be the unique key on the SQL based persistent queue storage. That makes it the same as the in memory queue.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libgearman-server/queue_libdrizzle.c'
2--- libgearman-server/queue_libdrizzle.c 2010-04-02 02:04:04 +0000
3+++ libgearman-server/queue_libdrizzle.c 2010-04-16 02:18:16 +0000
4@@ -221,10 +221,11 @@
5 snprintf(create, 1024,
6 "CREATE TABLE %s"
7 "("
8- "unique_key VARCHAR(%d) PRIMARY KEY,"
9+ "unique_key VARCHAR(%d),"
10 "function_name VARCHAR(255),"
11 "priority INT,"
12- "data LONGBLOB"
13+ "data LONGBLOB,"
14+ "unique key (unique_key, function_name)"
15 ")",
16 queue->table, GEARMAN_UNIQUE_SIZE);
17
18@@ -355,7 +356,7 @@
19 query= queue->query;
20
21 query_size= (size_t)snprintf(query, query_size,
22- "INSERT INTO %s SET priority=%u,unique_key='",
23+ "REPLACE INTO %s SET priority=%u,unique_key='",
24 queue->table, (uint32_t)priority);
25
26 query_size+= (size_t)drizzle_escape_string(query + query_size, unique,
27@@ -426,6 +427,11 @@
28 memcpy(query + query_size, "'", 1);
29 query_size+= 1;
30
31+ query_size+= (size_t)drizzle_escape_string(query + query_size, function_name,
32+ function_name_size);
33+ memcpy(query + query_size, "'", 1);
34+ query_size+= 1;
35+
36 if (_libdrizzle_query(server, queue, query, query_size) != DRIZZLE_RETURN_OK)
37 return GEARMAN_QUEUE_ERROR;
38
39
40=== modified file 'libgearman-server/queue_libpq.c'
41--- libgearman-server/queue_libpq.c 2010-04-02 02:04:04 +0000
42+++ libgearman-server/queue_libpq.c 2010-04-16 02:18:16 +0000
43@@ -170,10 +170,11 @@
44 snprintf(create, 1024,
45 "CREATE TABLE %s"
46 "("
47- "unique_key VARCHAR(%d) PRIMARY KEY,"
48+ "unique_key VARCHAR(%d),"
49 "function_name VARCHAR(255),"
50 "priority INTEGER,"
51- "data BYTEA"
52+ "data BYTEA,"
53+ "UNIQUE KEY (unique_key, function_name)"
54 ")",
55 queue->table, GEARMAN_UNIQUE_SIZE);
56
57@@ -355,6 +356,12 @@
58 unique_size, NULL);
59 memcpy(query + query_size, "'", 1);
60 query_size+= 1;
61+
62+ query_size+= PQescapeStringConn(queue->con, query + query_size, function_name,
63+ function_name_size, NULL);
64+ memcpy(query + query_size, "'", 1);
65+ query_size+= 1;
66+
67 query[query_size]= 0;
68
69 result= PQexec(queue->con, query);
70
71=== modified file 'libgearman-server/queue_libsqlite3.c'
72--- libgearman-server/queue_libsqlite3.c 2010-04-02 02:04:04 +0000
73+++ libgearman-server/queue_libsqlite3.c 2010-04-16 02:18:16 +0000
74@@ -207,10 +207,11 @@
75 snprintf(create, SQLITE_MAX_CREATE_TABLE_SIZE,
76 "CREATE TABLE %s"
77 "("
78- "unique_key TEXT PRIMARY KEY,"
79+ "unique_key TEXT,"
80 "function_name TEXT,"
81 "priority INTEGER,"
82- "data BLOB"
83+ "data BLOB,"
84+ "PRIMARY KEY (unique_key, function_name)"
85 ")",
86 queue->table);
87
88@@ -601,13 +602,14 @@
89 query= queue->query;
90
91 query_size= (size_t)snprintf(query, query_size,
92- "DELETE FROM %s WHERE unique_key=?",
93+ "DELETE FROM %s WHERE unique_key=? and function_name=?",
94 queue->table);
95
96 if (_sqlite_query(server, queue, query, query_size, &sth) != SQLITE_OK)
97 return GEARMAN_QUEUE_ERROR;
98
99 sqlite3_bind_text(sth, 1, unique, (int)unique_size, SQLITE_TRANSIENT);
100+ sqlite3_bind_text(sth, 2, function_name, (int)function_name_size, SQLITE_TRANSIENT);
101
102 if (sqlite3_step(sth) != SQLITE_DONE)
103 {

Subscribers

People subscribed via source and target branches

to all changes: