Subject Re: [Firebird-Architect] Re: Database Capabilities
Author Dmitry Yemanov
"Roman Rokytskyy" <rrokytskyy@...> wrote:
>
> > Second, did anyone look at isc_info_svc_capabilities before starting
> > this discussion? It doesn't work exactly as we want now, but it
> > implements the same idea.
>
> IB 6.0 documentation says - reserved for the future use. I was not
> able to find any corresponding defines in ibase.h

/* Flag of capabilities supported by the server */

//const ULONG WAL_SUPPORT = 0x1L; /*
Write Ahead Log */
const ULONG MULTI_CLIENT_SUPPORT = 0x2L; /* SuperServer model
(vs. multi-inet) */
const ULONG REMOTE_HOP_SUPPORT = 0x4L; /* Server can
connect to other server */
const ULONG NO_SVR_STATS_SUPPORT = 0x8L; /* Does not support
statistics */
const ULONG NO_DB_STATS_SUPPORT = 0x10L; /* Does not
support statistics */
const ULONG LOCAL_ENGINE_SUPPORT = 0x20L; /* The local
16 bit engine */
const ULONG NO_FORCED_WRITE_SUPPORT = 0x40L; /* Can not
configure sync writes */
const ULONG NO_SHUTDOWN_SUPPORT = 0x80L; /* Can not
shutdown/restart databases */
const ULONG NO_SERVER_SHUTDOWN_SUPPORT = 0x100L; /* Can not shutdown
server */
const ULONG SERVER_CONFIG_SUPPORT = 0x200L; /* Can
configure server */
const ULONG QUOTED_FILENAME_SUPPORT = 0x400L; /* Can pass
quoted filenames in */

/* The SERVER_CAPABILITIES_FLAG is used to mark architectural
** differences across servers. This allows applications like server
** manager to disable features as necessary.
*/

#ifdef SUPERSERVER
const ULONG SERVER_CAPABILITIES = REMOTE_HOP_SUPPORT | MULTI_CLIENT_SUPPORT
| SERVER_CONFIG_SUPPORT;
# ifdef WIN_NT
const ULONG SERVER_CAPABILITIES_FLAG = SERVER_CAPABILITIES |
QUOTED_FILENAME_SUPPORT;
# else
const ULONG SERVER_CAPABILITIES_FLAG = SERVER_CAPABILITIES |
NO_SERVER_SHUTDOWN_SUPPORT;
# endif // WIN_NT
#else // SUPERSERVER
const ULONG SERVER_CAPABILITIES_FLAG = REMOTE_HOP_SUPPORT |
NO_SERVER_SHUTDOWN_SUPPORT;
#endif // SERVER_CAPABILITIES


The SERVER_CAPABILITIES_FLAG value is returned via the mentioned SvcAPI
request item.

AFAIU, it was implemented to suit the server manager needs and it isn't
documented for public. But it's more or less the thing we're talking about.


Dmitry