summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2011-04-14 23:11:37 +0200
committerBadlop <badlop@process-one.net>2011-04-14 23:11:37 +0200
commit4f1ececbd17cdc6ff19a42d5c7cacb32744800c7 (patch)
tree64565ea53074e8d481a0cace8c9877e7426b36f8 /src
parentThe 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.sql34
-rw-r--r--src/odbc/mssql2005.sql34
-rw-r--r--src/odbc/odbc_queries.erl16
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.