Skip to content
This repository was archived by the owner on Jul 11, 2021. It is now read-only.

Commit 6767533

Browse files
author
Simone Mosciatti
committed
add Copy Syncronous and increase version number
1 parent 85c654e commit 6767533

File tree

5 files changed

+37
-15
lines changed

5 files changed

+37
-15
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rediSQL"
3-
version = "0.6.1"
3+
version = "0.7.0"
44
authors = ["Simone Mosciatti <[email protected]>"]
55

66
[lib]

engine_pro

Submodule engine_pro updated from 0e5ef74 to b5646b5

src/lib.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -862,10 +862,6 @@ extern "C" fn MakeCopy(
862862
},
863863
};
864864

865-
/*
866-
let source_connection = source_db.loop_data.get_db();
867-
let dest_connection = dest_db.loop_data.get_db();
868-
*/
869865
let ch = &source_db.tx.clone();
870866

871867
let cmd = r::Command::MakeCopy {
@@ -874,15 +870,13 @@ extern "C" fn MakeCopy(
874870
client: blocked_client,
875871
};
876872

877-
/*
878-
std::mem::forget(source_db);
879-
std::mem::forget(dest_db);
880-
*/
881-
882873
debug!("MakeCopy | End");
883874
match ch.send(cmd) {
884875
Ok(()) => {
885876
debug!("MakeCopy | Successfully send command");
877+
unsafe {
878+
Replicate(&context, "REDISQL.COPY.NOW", argv, argc);
879+
}
886880
r::rm::ffi::REDISMODULE_OK
887881
}
888882
Err(_) => r::rm::ffi::REDISMODULE_OK,
@@ -1033,10 +1027,9 @@ pub extern "C" fn RedisModule_OnLoad(
10331027
Err(e) => return e,
10341028
}
10351029

1036-
match register_function(
1030+
match register_write_function(
10371031
&ctx,
10381032
String::from("REDISQL.COPY"),
1039-
String::from("readonly"),
10401033
MakeCopy,
10411034
) {
10421035
Ok(()) => (),

test/correctness/test.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,35 @@ def test_statements_copy_mem_from_mem(self):
592592
result = self.exec_naked("REDISQL.QUERY_STATEMENT", "DB2", "select1")
593593
self.assertEquals(result, [[1L]])
594594

595+
class TestCopySyncronous(TestRediSQLWithExec):
596+
def test_copy_now_mem_from_mem(self):
597+
done = self.exec_naked("REDISQL.CREATE_DB", "DB1")
598+
self.assertEquals(done, "OK")
599+
done = self.exec_naked("REDISQL.CREATE_DB", "DB2")
600+
self.assertEquals(done, "OK")
601+
done = self.exec_naked("REDISQL.EXEC", "DB1", "CREATE TABLE foo(a INT);")
602+
self.assertEquals(done, ["DONE", 0L])
603+
604+
for i in xrange(10):
605+
done = self.exec_naked("REDISQL.EXEC", "DB1", "INSERT INTO foo VALUES({})".format(i))
606+
self.assertEquals(done, ["DONE", 1L])
607+
608+
done = self.exec_naked("REDISQL.COPY.NOW", "DB1", "DB2")
609+
result = self.exec_naked("REDISQL.QUERY", "DB2", "SELECT a FROM foo ORDER BY a")
610+
self.assertEquals(result, [[0L], [1L], [2L], [3L], [4L], [5L], [6L], [7L], [8L], [9L]])
611+
612+
def test_statements_copy_now_mem_from_mem(self):
613+
done = self.exec_naked("REDISQL.CREATE_DB", "DB1")
614+
self.assertEquals(done, "OK")
615+
done = self.exec_naked("REDISQL.CREATE_DB", "DB2")
616+
self.assertEquals(done, "OK")
617+
done = self.exec_naked("REDISQL.CREATE_STATEMENT", "DB1", "select1", "SELECT 1;")
618+
self.assertEquals(done, "OK")
619+
620+
done = self.exec_naked("REDISQL.COPY.NOW", "DB1", "DB2")
621+
result = self.exec_naked("REDISQL.QUERY_STATEMENT", "DB2", "select1")
622+
self.assertEquals(result, [[1L]])
623+
595624

596625
if __name__ == '__main__':
597626
unittest.main()

0 commit comments

Comments
 (0)