diff options
author | Badlop <badlop@process-one.net> | 2011-04-14 23:11:37 +0200 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2011-04-14 23:11:37 +0200 |
commit | 4f1ececbd17cdc6ff19a42d5c7cacb32744800c7 (patch) | |
tree | 64565ea53074e8d481a0cace8c9877e7426b36f8 /src | |
parent | The responses to HEAD must have empty Body (diff) |
Try to improve support for roster_version in MSSQL (EJAB-1437)
Diffstat (limited to 'src')
-rw-r--r-- | src/odbc/mssql2000.sql | 34 | ||||
-rw-r--r-- | src/odbc/mssql2005.sql | 34 | ||||
-rw-r--r-- | src/odbc/odbc_queries.erl | 16 |
3 files changed, 80 insertions, 4 deletions
diff --git a/src/odbc/mssql2000.sql b/src/odbc/mssql2000.sql index 151d474a..d4a70989 100644 --- a/src/odbc/mssql2000.sql +++ b/src/odbc/mssql2000.sql @@ -597,6 +597,40 @@ BEGIN END
GO
+/******************************************************************/
+/****** Object: StoredProcedure [dbo].[set_roster_version] **/
+/** Update users roster_version **/
+/******************************************************************/
+CREATE PROCEDURE [dbo].[set_roster_version]
+ @Username varchar(200),
+ @Version varchar(50)
+AS
+BEGIN
+ IF EXISTS (SELECT username FROM roster_version WITH (NOLOCK) WHERE username=@Username)
+ BEGIN
+ UPDATE roster_version SET username=@Username, version=@Version WHERE username=@Username;
+ END
+ ELSE
+ BEGIN
+ INSERT INTO roster_version (username, version) VALUES (@Username, @Version);
+ END
+END
+GO
+
+/******************************************************************/
+/****** Object: StoredProcedure [dbo].[get_roster_version] **/
+/** Retrive the user roster_version **/
+/******************************************************************/
+CREATE PROCEDURE [dbo].[get_roster_version]
+ @Username varchar(200)
+AS
+BEGIN
+ SELECT roster_version.version as version
+ FROM roster_version WITH (NOLOCK)
+ WHERE username=@Username;
+END
+GO
+
/***************************************************************/
/****** Object: StoredProcedure [dbo].[clean_spool_msg] ******/
/** Delete messages older that 3 days from spool **/
diff --git a/src/odbc/mssql2005.sql b/src/odbc/mssql2005.sql index 8420b769..91120707 100644 --- a/src/odbc/mssql2005.sql +++ b/src/odbc/mssql2005.sql @@ -918,6 +918,40 @@ BEGIN END GO +/******************************************************************/ +/****** Object: StoredProcedure [dbo].[set_roster_version] **/ +/** Update users roster_version **/ +/******************************************************************/ +CREATE PROCEDURE [dbo].[set_roster_version] + @Username varchar(200), + @Version varchar(8000) +AS +BEGIN + IF EXISTS (SELECT username FROM roster_version WITH (NOLOCK) WHERE username=@Username) + BEGIN + UPDATE roster_version SET username=@Username, version=@Version WHERE username=@Username; + END + ELSE + BEGIN + INSERT INTO roster_version (username, version) VALUES (@Username, @Version); + END +END +GO + +/******************************************************************/ +/****** Object: StoredProcedure [dbo].[get_roster_version] **/ +/** Retrive the user roster_version **/ +/******************************************************************/ +CREATE PROCEDURE [dbo].[get_roster_version] + @Username varchar(200) +AS +BEGIN + SELECT roster_version.version as version + FROM roster_version WITH (NOLOCK) + WHERE username=@Username; +END +GO + /***************************************************************/ /****** Object: StoredProcedure [dbo].[clean_spool_msg] ******/ /** Delete messages older that 3 days from spool **/ diff --git a/src/odbc/odbc_queries.erl b/src/odbc/odbc_queries.erl index 3e3a2942..b614fd79 100644 --- a/src/odbc/odbc_queries.erl +++ b/src/odbc/odbc_queries.erl @@ -90,6 +90,8 @@ -define(generic, true). -endif. +-include("ejabberd.hrl"). + %% Almost a copy of string:join/2. %% We use this version because string:join/2 is relatively %% new function (introduced in R12B-0). @@ -882,8 +884,14 @@ count_records_where(LServer, Table, WhereClause) -> ["select count(*) from ", Table, " with (nolock) ", WhereClause]). get_roster_version(LServer, LUser) -> - ejabberd_odbc:sql_query(LServer, - ["select version from dbo.roster_version with (nolock) where username = '", LUser, "'"]). -set_roster_version(LUser, Version) -> - update_t("dbo.roster_version", ["username", "version"], [LUser, Version], ["username = '", LUser, "'"]). + ejabberd_odbc:sql_query( + LServer, + ["EXECUTE dbo.get_roster_version '", LUser, "'"]). + +set_roster_version(Username, Version) -> + %% This function doesn't know the vhost, so we hope it's the first one defined: + LServer = ?MYNAME, + ejabberd_odbc:sql_query( + LServer, + ["EXECUTE dbo.set_roster_version '", Username, "', '", Version, "'"]). -endif. |