aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2017-11-16 11:38:04 +0100
committerChristophe Romain <christophe.romain@process-one.net>2017-11-16 11:38:04 +0100
commit44700d91ba270a251b512c0b7ad8e4c4d8962ad2 (patch)
tree42b16f2b8a333ed1638fd345802a1d3ac1abac7a
parentLet validator know about c2s_dhfile (diff)
PubSub: Cleanup tree requests, rename pubsub_node.type->pubsub_node.plugin
-rw-r--r--sql/lite.sql2
-rw-r--r--sql/mssql.sql2
-rw-r--r--sql/mysql.sql2
-rw-r--r--sql/pg.new.sql2
-rw-r--r--sql/pg.sql2
-rw-r--r--src/node_flat_sql.erl10
-rw-r--r--src/node_pep_sql.erl8
-rw-r--r--src/nodetree_tree_sql.erl76
8 files changed, 49 insertions, 55 deletions
diff --git a/sql/lite.sql b/sql/lite.sql
index b0c8675f5..e9d2ac6f2 100644
--- a/sql/lite.sql
+++ b/sql/lite.sql
@@ -203,7 +203,7 @@ CREATE TABLE pubsub_node (
host text NOT NULL,
node text NOT NULL,
parent text NOT NULL DEFAULT '',
- type text NOT NULL,
+ plugin text NOT NULL,
nodeid INTEGER PRIMARY KEY AUTOINCREMENT
);
CREATE INDEX i_pubsub_node_parent ON pubsub_node (parent);
diff --git a/sql/mssql.sql b/sql/mssql.sql
index 83b219298..8a24bd5d5 100644
--- a/sql/mssql.sql
+++ b/sql/mssql.sql
@@ -279,7 +279,7 @@ CREATE TABLE [dbo].[pubsub_node] (
[host] [varchar] (255) NOT NULL,
[node] [varchar] (255) NOT NULL,
[parent] [varchar] (255) NOT NULL DEFAULT '',
- [type] [text] NOT NULL,
+ [plugin] [text] NOT NULL,
[nodeid] [bigint] IDENTITY(1,1) NOT NULL,
CONSTRAINT [pubsub_node_PRIMARY] PRIMARY KEY CLUSTERED
(
diff --git a/sql/mysql.sql b/sql/mysql.sql
index acf2bfe1a..3e34bbb32 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -215,7 +215,7 @@ CREATE TABLE pubsub_node (
host text NOT NULL,
node text NOT NULL,
parent VARCHAR(191) NOT NULL DEFAULT '',
- type text NOT NULL,
+ plugin text NOT NULL,
nodeid bigint auto_increment primary key
) ENGINE=InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE INDEX i_pubsub_node_parent ON pubsub_node(parent(120));
diff --git a/sql/pg.new.sql b/sql/pg.new.sql
index b155a4223..feb334779 100644
--- a/sql/pg.new.sql
+++ b/sql/pg.new.sql
@@ -396,7 +396,7 @@ CREATE TABLE pubsub_node (
host text NOT NULL,
node text NOT NULL,
parent text NOT NULL DEFAULT '',
- "type" text NOT NULL,
+ plugin text NOT NULL,
nodeid SERIAL UNIQUE
);
CREATE INDEX i_pubsub_node_parent ON pubsub_node USING btree (parent);
diff --git a/sql/pg.sql b/sql/pg.sql
index fd56ba39d..48f4a85d4 100644
--- a/sql/pg.sql
+++ b/sql/pg.sql
@@ -221,7 +221,7 @@ CREATE TABLE pubsub_node (
host text NOT NULL,
node text NOT NULL,
parent text NOT NULL DEFAULT '',
- "type" text NOT NULL,
+ plugin text NOT NULL,
nodeid SERIAL UNIQUE
);
CREATE INDEX i_pubsub_node_parent ON pubsub_node USING btree (parent);
diff --git a/src/node_flat_sql.erl b/src/node_flat_sql.erl
index 5995d9fa3..afbc050a8 100644
--- a/src/node_flat_sql.erl
+++ b/src/node_flat_sql.erl
@@ -337,7 +337,7 @@ get_entity_affiliations(Host, Owner) ->
J = encode_jid(GenKey),
{result,
case ejabberd_sql:sql_query_t(
- ?SQL("select @(node)s, @(type)s, @(i.nodeid)d, @(affiliation)s "
+ ?SQL("select @(node)s, @(plugin)s, @(i.nodeid)d, @(affiliation)s "
"from pubsub_state i, pubsub_node n where "
"i.nodeid = n.nodeid and jid=%(J)s and host=%(H)s")) of
{selected, RItems} ->
@@ -389,13 +389,13 @@ get_entity_subscriptions(Host, Owner) ->
Query = case SubKey of
GenKey ->
GJLike = <<(encode_jid_like(GenKey))/binary, "/%">>,
- ?SQL("select @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n "
"where i.nodeid = n.nodeid and "
"(jid=%(GJ)s or jid like %(GJLike)s escape '^') and host=%(H)s");
_ ->
SJ = encode_jid(SubKey),
- ?SQL("select @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n "
"where i.nodeid = n.nodeid and "
"jid in (%(SJ)s, %(GJ)s) and host=%(H)s")
@@ -431,14 +431,14 @@ get_entity_subscriptions_for_send_last(Host, Owner) ->
Query = case SubKey of
GenKey ->
GJLike = <<(encode_jid_like(GenKey))/binary, "/%">>,
- ?SQL("select @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n, pubsub_node_option o "
"where i.nodeid = n.nodeid and n.nodeid = o.nodeid and "
"name='send_last_published_item' and val='on_sub_and_presence' and "
"(jid=%(GJ)s or jid like %(GJLike)s escape '^') and host=%(H)s");
_ ->
SJ = encode_jid(SubKey),
- ?SQL("select @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n, pubsub_node_option o "
"where i.nodeid = n.nodeid and n.nodeid = o.nodeid and "
"name='send_last_published_item' and val='on_sub_and_presence' and "
diff --git a/src/node_pep_sql.erl b/src/node_pep_sql.erl
index 07ff24b51..4a2690c27 100644
--- a/src/node_pep_sql.erl
+++ b/src/node_pep_sql.erl
@@ -123,13 +123,13 @@ get_entity_subscriptions(_Host, Owner) ->
Query = case SubKey of
GenKey ->
GJLike = <<(node_flat_sql:encode_jid_like(GenKey))/binary, "/%">>,
- ?SQL("select @(host)s, @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(host)s, @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n "
"where i.nodeid = n.nodeid and "
"(jid=%(GJ)s or jid like %(GJLike)s escape '^') and host like %(HLike)s escape '^'");
_ ->
SJ = node_flat_sql:encode_jid(SubKey),
- ?SQL("select @(host)s, @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(host)s, @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n "
"where i.nodeid = n.nodeid and "
"jid in (%(SJ)s,%(GJ)s) and host like %(HLike)s escape '^'")
@@ -159,14 +159,14 @@ get_entity_subscriptions_for_send_last(_Host, Owner) ->
Query = case SubKey of
GenKey ->
GJLike = <<(node_flat_sql:encode_jid_like(GenKey))/binary, "/%">>,
- ?SQL("select @(host)s, @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(host)s, @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n, pubsub_node_option o "
"where i.nodeid = n.nodeid and n.nodeid = o.nodeid and "
"name='send_last_published_item' and val='on_sub_and_presence' and "
"(jid=%(GJ)s or jid like %(GJLike)s escape '^') and host like %(HLike)s escape '^'");
_ ->
SJ = node_flat_sql:encode_jid(SubKey),
- ?SQL("select @(host)s, @(node)s, @(type)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
+ ?SQL("select @(host)s, @(node)s, @(plugin)s, @(i.nodeid)d, @(jid)s, @(subscriptions)s "
"from pubsub_state i, pubsub_node n, pubsub_node_option o "
"where i.nodeid = n.nodeid and n.nodeid = o.nodeid and "
"name='send_last_published_item' and val='on_sub_and_presence' and "
diff --git a/src/nodetree_tree_sql.erl b/src/nodetree_tree_sql.erl
index 73ab74e8a..b310dd2d1 100644
--- a/src/nodetree_tree_sql.erl
+++ b/src/nodetree_tree_sql.erl
@@ -72,23 +72,20 @@ set_node(Record) when is_record(Record, pubsub_node) ->
{result, OldNidx} ->
catch
ejabberd_sql:sql_query_t(
- ?SQL("delete from pubsub_node_option where "
- "nodeid=%(OldNidx)d")),
+ ?SQL("delete from pubsub_node_option "
+ "where nodeid=%(OldNidx)d")),
catch
ejabberd_sql:sql_query_t(
- ?SQL("update pubsub_node set"
- " host=%(H)s,"
- " node=%(Node)s,"
- " parent=%(Parent)s,"
- " type=%(Type)s "
- "where nodeid=%(OldNidx)d")),
+ ?SQL("update pubsub_node set"
+ " host=%(H)s, node=%(Node)s,"
+ " parent=%(Parent)s, plugin=%(Type)s "
+ "where nodeid=%(OldNidx)d")),
OldNidx;
_ ->
catch
ejabberd_sql:sql_query_t(
- ?SQL("insert into pubsub_node(host, node, "
- "parent, type) values("
- "%(H)s, %(Node)s, %(Parent)s, %(Type)s)")),
+ ?SQL("insert into pubsub_node(host, node, parent, plugin) "
+ "values(%(H)s, %(Node)s, %(Parent)s, %(Type)s)")),
case nodeidx(Host, Node) of
{result, NewNidx} -> NewNidx;
_ -> none % this should not happen
@@ -104,9 +101,8 @@ set_node(Record) when is_record(Record, pubsub_node) ->
SValue = misc:term_to_expr(Value),
catch
ejabberd_sql:sql_query_t(
- ?SQL("insert into pubsub_node_option(nodeid, "
- "name, val) values ("
- "%(Nidx)d, %(SKey)s, %(SValue)s)"))
+ ?SQL("insert into pubsub_node_option(nodeid, name, val) "
+ "values (%(Nidx)d, %(SKey)s, %(SValue)s)"))
end,
Record#pubsub_node.options),
{result, Nidx}
@@ -119,8 +115,8 @@ get_node(Host, Node) ->
H = node_flat_sql:encode_host(Host),
case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(node)s, @(parent)s, @(type)s, @(nodeid)d from "
- "pubsub_node where host=%(H)s and node=%(Node)s"))
+ ?SQL("select @(node)s, @(parent)s, @(plugin)s, @(nodeid)d from pubsub_node "
+ "where host=%(H)s and node=%(Node)s"))
of
{selected, [RItem]} ->
raw_to_node(Host, RItem);
@@ -133,8 +129,8 @@ get_node(Host, Node) ->
get_node(Nidx) ->
case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(host)s, @(node)s, @(parent)s, @(type)s from "
- "pubsub_node where nodeid=%(Nidx)d"))
+ ?SQL("select @(host)s, @(node)s, @(parent)s, @(plugin)s from pubsub_node "
+ "where nodeid=%(Nidx)d"))
of
{selected, [{Host, Node, Parent, Type}]} ->
raw_to_node(Host, {Node, Parent, Type, Nidx});
@@ -151,8 +147,8 @@ get_nodes(Host) ->
H = node_flat_sql:encode_host(Host),
case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(node)s, @(parent)s, @(type)s, @(nodeid)d from "
- "pubsub_node where host=%(H)s"))
+ ?SQL("select @(node)s, @(parent)s, @(plugin)s, @(nodeid)d from pubsub_node "
+ "where host=%(H)s"))
of
{selected, RItems} ->
[raw_to_node(Host, Item) || Item <- RItems];
@@ -189,8 +185,8 @@ get_subnodes(Host, Node) ->
H = node_flat_sql:encode_host(Host),
case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(node)s, @(parent)s, @(type)s, @(nodeid)d from "
- "pubsub_node where host=%(H)s and parent=%(Node)s"))
+ ?SQL("select @(node)s, @(parent)s, @(plugin)s, @(nodeid)d from pubsub_node "
+ "where host=%(H)s and parent=%(Node)s"))
of
{selected, RItems} ->
[raw_to_node(Host, Item) || Item <- RItems];
@@ -206,14 +202,14 @@ get_subnodes_tree(Host, Node) ->
{error, _} ->
[];
Rec ->
+ Type = Rec#pubsub_node.type,
H = node_flat_sql:encode_host(Host),
N = <<(ejabberd_sql:escape_like_arg_circumflex(Node))/binary, "/%">>,
Sub = case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(node)s, @(parent)s, @(type)s, @(nodeid)d from "
- "pubsub_node where host=%(H)s"
- " and node like %(N)s escape '^'"
- " and \"type\"='hometree'"))
+ ?SQL("select @(node)s, @(parent)s, @(plugin)s, @(nodeid)d from pubsub_node "
+ "where host=%(H)s and plugin=%(Type)s and"
+ " (parent=%(Node)s or parent like %(N)s escape '^')"))
of
{selected, RItems} ->
[raw_to_node(Host, Item) || Item <- RItems];
@@ -269,14 +265,13 @@ create_node(Host, Node, Type, Owner, Options, Parents) ->
end.
delete_node(Host, Node) ->
- H = node_flat_sql:encode_host(Host),
- N = <<(ejabberd_sql:escape_like_arg_circumflex(Node))/binary, "/%">>,
- Removed = get_subnodes_tree(Host, Node),
- catch ejabberd_sql:sql_query_t(
- ?SQL("delete from pubsub_node where host=%(H)s"
- " and (node=%(Node)s"
- " or (\"type\"='hometree' and node like %(N)s escape '^'))")),
- Removed.
+ lists:map(
+ fun(Rec) ->
+ Nidx = Rec#pubsub_node.id,
+ catch ejabberd_sql:sql_query_t(
+ ?SQL("delete from pubsub_node where nodeid=%(Nidx)d")),
+ Rec
+ end, get_subnodes_tree(Host, Node)).
%% helpers
raw_to_node(Host, [Node, Parent, Type, Nidx]) ->
@@ -284,8 +279,8 @@ raw_to_node(Host, [Node, Parent, Type, Nidx]) ->
raw_to_node(Host, {Node, Parent, Type, Nidx}) ->
Options = case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(name)s, @(val)s from pubsub_node_option "
- "where nodeid=%(Nidx)d"))
+ ?SQL("select @(name)s, @(val)s from pubsub_node_option "
+ "where nodeid=%(Nidx)d"))
of
{selected, ROptions} ->
DbOpts = lists:map(fun ({Key, Value}) ->
@@ -308,16 +303,15 @@ raw_to_node(Host, {Node, Parent, Type, Nidx}) ->
<<>> -> [];
_ -> [Parent]
end,
- #pubsub_node{nodeid = {Host, Node},
- parents = Parents,
- id = Nidx, type = Type, options = Options}.
+ #pubsub_node{nodeid = {Host, Node}, id = Nidx,
+ parents = Parents, type = Type, options = Options}.
nodeidx(Host, Node) ->
H = node_flat_sql:encode_host(Host),
case catch
ejabberd_sql:sql_query_t(
- ?SQL("select @(nodeid)d from pubsub_node where "
- "host=%(H)s and node=%(Node)s"))
+ ?SQL("select @(nodeid)d from pubsub_node "
+ "where host=%(H)s and node=%(Node)s"))
of
{selected, [{Nidx}]} ->
{result, Nidx};