2 * Firebird ADO.NET Data provider for .NET and Mono
4 * The contents of this file are subject to the Initial
5 * Developer's Public License Version 1.0 (the "License");
6 * you may not use this file except in compliance with the
7 * License. You may obtain a copy of the License at
8 * http://www.firebirdsql.org/index.php?op=doc&id=idpl
10 * Software distributed under the License is distributed on
11 * an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
12 * express or implied. See the License for the specific
13 * language governing rights and limitations under the License.
15 * Copyright (c) 2002, 2005 Carlos Guzman Alvarez
16 * All Rights Reserved.
21 using System.Globalization;
24 namespace FirebirdSql.Data.Firebird.DbSchema
26 internal class FbViewPrivileges : FbDbSchema
30 public FbViewPrivileges() : base("ViewPrivileges")
36 #region Protected Methods
38 protected override StringBuilder GetCommandText(object[] restrictions)
40 StringBuilder sql = new StringBuilder();
41 StringBuilder where = new StringBuilder();
45 "null AS VIEW_CATALOG, " +
46 "null AS VIEW_SCHEMA, " +
47 "priv.rdb$relation_name AS VIEW_NAME, " +
48 "priv.rdb$user AS GRANTEE, " +
49 "priv.rdb$grantor AS GRANTOR, " +
50 "priv.rdb$privilege AS PRIVILEGE, " +
51 "priv.rdb$grant_option AS WITH_GRANT " +
53 "rdb$user_privileges priv " +
54 "left join rdb$relations rel ON priv.rdb$relation_name = rel.rdb$relation_name");
56 where.Append("priv.rdb$object_type = 0");
57 where.Append(" AND rel.rdb$view_source IS NOT NULL");
59 if (restrictions != null)
64 if (restrictions.Length >= 1 && restrictions[0] != null)
69 if (restrictions.Length >= 2 && restrictions[1] != null)
74 if (restrictions.Length >= 3 && restrictions[2] != null)
76 where.AppendFormat(CultureInfo.CurrentCulture, " AND priv.rdb$relation_name = @p{0}", index++);
80 if (restrictions.Length >= 4 && restrictions[3] != null)
82 where.AppendFormat(CultureInfo.CurrentCulture, " AND priv.rdb$grantor = @p{0}", index++);
86 if (restrictions.Length >= 5 && restrictions[4] != null)
88 where.AppendFormat(CultureInfo.CurrentCulture, " AND priv.rdb$user = @p{0}", index++);
94 sql.AppendFormat(CultureInfo.CurrentCulture, " WHERE {0} ", where.ToString());
97 sql.Append(" ORDER BY priv.rdb$relation_name, priv.rdb$user");