Exemplo n.º 1
0
bool CAeonInterface::ParseTableFilePath (const CString &sPath, CString *retsTable, CString *retsFilePath, CString *retsError)

//	ParseTableFilePath
//
//	Parses a filePath

	{
	char *pPos = sPath.GetParsePointer();
	char *pEndPos = pPos + sPath.GetLength();

	//	First character must be a slash because we need an absolute path

	if (*pPos != '/')
		{
		if (retsError)
			*retsError = STR_ERROR_ABSOLUTE_PATH_REQUIRED;
		return false;
		}

	pPos++;

	//	The first segment is the table name

	char *pStart = pPos;
	while (pPos < pEndPos && *pPos != '/')
		pPos++;

	CString sTable(pStart, pPos - pStart);
	if (sTable.IsEmpty())
		{
		if (retsError)
			*retsError = STR_ERROR_NO_TABLE_IN_PATH;
		return false;
		}

	//	We have the table name

	if (retsTable)
		*retsTable = sTable;

	//	If we've reached the end, then we have an empty path

	if (pPos >= pEndPos)
		{
		if (retsFilePath)
			*retsFilePath = CString("/", 1);
		return true;
		}

	//	filePath starts with a slash and goes to the end.

	if (retsFilePath)
		*retsFilePath = CString(pPos, (int)(pEndPos - pPos));

	//	Done

	return true;
	}
void
icatGeneralQuerySetup() {
#ifdef EXTENDED_ICAT
  int i;
#endif
  sTableInit();   /* initialize */

  sTable( "R_USER_PASSWORD",  "R_USER_PASSWORD", 0);
  sTable( "R_USER_SESSION_KEY",  "R_USER_SESSION_KEY", 0);
  sTable( "R_TOKN_MAIN",  "R_TOKN_MAIN", 0);
  sTable( "R_RESC_GROUP",  "R_RESC_GROUP", 0);
  sTable( "R_ZONE_MAIN",  "R_ZONE_MAIN", 0);
  sTable( "R_RESC_MAIN",  "R_RESC_MAIN", 0);
  sTable( "R_COLL_MAIN",  "R_COLL_MAIN", 0);
  sTable( "R_DATA_MAIN",  "R_DATA_MAIN", 0);

  sTable( "r_met2_main", "R_META_MAIN r_met2_main" ,0);
  sTable( "R_META_MAIN", "R_META_MAIN" , 0);

  sTable( "R_RULE_MAIN",  "R_RULE_MAIN", 0);
  sTable( "R_USER_MAIN",  "R_USER_MAIN", 0);
  sTable( "r_resc_access", "R_OBJT_ACCESS r_resc_access", 0);
  sTable( "r_coll_access", "R_OBJT_ACCESS r_coll_access", 0);
  sTable( "r_data_access", "R_OBJT_ACCESS r_data_access", 0);
  sTable( "r_met2_access", "R_OBJT_ACCESS r_met2_access", 0);
  sTable( "r_rule_access", "R_OBJT_ACCESS r_rule_access", 0);
  sTable( "r_msrvc_access", "R_OBJT_ACCESS r_msrvc_access", 0);
  sTable( "r_resc_audit", "R_OBJT_AUDIT r_resc_audit", 0);
  sTable( "r_coll_audit", "R_OBJT_AUDIT r_coll_audit", 0);
  sTable( "r_data_audit", "R_OBJT_AUDIT r_data_audit", 0);
  sTable( "r_met2_audit", "R_OBJT_AUDIT r_met2_audit", 0);
  sTable( "r_rule_audit", "R_OBJT_AUDIT r_rule_audit", 0);
  sTable( "r_resc_deny_access", "R_OBJT_DENY_ACCESS r_resc_deny_access", 0);
  sTable( "r_coll_deny_access", "R_OBJT_DENY_ACCESS r_coll_deny_access", 0);
  sTable( "r_data_deny_access", "R_OBJT_DENY_ACCESS r_data_deny_access", 0);
  sTable( "r_met2_deny_access", "R_OBJT_DENY_ACCESS r_met2_deny_access", 0);
  sTable( "r_rule_deny_access", "R_OBJT_DENY_ACCESS r_rule_deny_access", 0);
  sTable( "r_resc_metamap", "R_OBJT_METAMAP r_resc_metamap", 0);
  sTable( "r_resc_grp_metamap", "R_OBJT_METAMAP r_resc_grp_metamap", 0);
  sTable( "r_coll_metamap", "R_OBJT_METAMAP r_coll_metamap", 0);
  sTable( "r_data_metamap", "R_OBJT_METAMAP r_data_metamap", 0);
  sTable( "r_met2_metamap", "R_OBJT_METAMAP r_met2_metamap", 0);
  sTable( "r_rule_metamap", "R_OBJT_METAMAP r_rule_metamap", 0);
  sTable( "r_msrvc_metamap", "R_OBJT_METAMAP r_msrvc_metamap", 0);
  sTable( "r_user_metamap", "R_OBJT_METAMAP r_user_metamap", 0);
  sTable( "r_resc_user_group", "R_USER_GROUP r_resc_user_group", 0);
  sTable( "r_coll_user_group", "R_USER_GROUP r_coll_user_group", 0);
  sTable( "r_data_user_group", "R_USER_GROUP r_data_user_group", 0);
  sTable( "r_met2_user_group", "R_USER_GROUP r_met2_user_group", 0);
  sTable( "r_rule_user_group", "R_USER_GROUP r_rule_user_group", 0);
  sTable( "r_resc_da_user_group", "R_USER_GROUP r_resc_da_user_group", 0);
  sTable( "r_coll_da_user_group", "R_USER_GROUP r_coll_da_user_group", 0);
  sTable( "r_data_da_user_group", "R_USER_GROUP r_data_da_user_group", 0);
  sTable( "r_met2_da_user_group", "R_USER_GROUP r_met2_da_user_group", 0);
  sTable( "r_rule_da_user_group", "R_USER_GROUP r_rule_da_user_group", 0);

  sTable( "r_resc_au_user_group", "R_USER_GROUP r_resc_au_user_group", 0);
  sTable( "r_coll_au_user_group", "R_USER_GROUP r_coll_au_user_group", 0);
  sTable( "r_data_au_user_group", "R_USER_GROUP r_data_au_user_group", 0);
  sTable( "r_met2_au_user_group", "R_USER_GROUP r_met2_au_user_group", 0);
  sTable( "r_rule_au_user_group", "R_USER_GROUP r_rule_au_user_group", 0);
  sTable( "r_resc_user_main", "R_USER_MAIN r_resc_user_main", 0);
  sTable( "r_coll_user_main", "R_USER_MAIN r_coll_user_main", 0);
  sTable( "r_data_user_main", "R_USER_MAIN r_data_user_main", 0);
  sTable( "r_met2_user_main", "R_USER_MAIN r_met2_user_main", 0);
  sTable( "r_rule_user_main", "R_USER_MAIN r_rule_user_main", 0);
  sTable( "r_resc_da_user_main", "R_USER_MAIN r_resc_da_user_main", 0);
  sTable( "r_coll_da_user_main", "R_USER_MAIN r_coll_da_user_main", 0);
  sTable( "r_data_da_user_main", "R_USER_MAIN r_data_da_user_main", 0);
  sTable( "r_met2_da_user_main", "R_USER_MAIN r_met2_da_user_main", 0);
  sTable( "r_rule_da_user_main", "R_USER_MAIN r_rule_da_user_main", 0);
  sTable( "r_resc_au_user_main", "R_USER_MAIN r_resc_au_user_main", 0);
  sTable( "r_coll_au_user_main", "R_USER_MAIN r_coll_au_user_main", 0);
  sTable( "r_data_au_user_main", "R_USER_MAIN r_data_au_user_main", 0);
  sTable( "r_met2_au_user_main", "R_USER_MAIN r_met2_au_user_main", 0);
  sTable( "r_rule_au_user_main", "R_USER_MAIN r_rule_au_user_main", 0);

  sTable( "r_quota_user_main", "R_USER_MAIN r_quota_user_main", 1); 
  sTable( "r_quota_user_group", "R_USER_MAIN r_quota_user_group", 1);
  sTable( "r_quota_resc_main", "R_RESC_MAIN r_quota_resc_main", 1);

  sTable( "r_resc_tokn_accs", "R_TOKN_MAIN r_resc_tokn_accs", 0);
  sTable( "r_coll_tokn_accs", "R_TOKN_MAIN r_coll_tokn_accs", 0);
  sTable( "r_data_tokn_accs", "R_TOKN_MAIN r_data_tokn_accs", 0);

  sTable( "r_rule_tokn_accs", "R_TOKN_MAIN r_rule_tokn_accs", 0);
  sTable( "r_met2_tokn_accs", "R_TOKN_MAIN r_met2_tokn_accs", 0);
  sTable( "r_resc_tokn_deny_accs", "R_TOKN_MAIN r_resc_tokn_deny_accs", 0);
  sTable( "r_coll_tokn_deny_accs", "R_TOKN_MAIN r_coll_tokn_deny_accs", 0);
  sTable( "r_data_tokn_deny_accs", "R_TOKN_MAIN r_data_tokn_deny_accs", 0);
  sTable( "r_rule_tokn_deny_accs", "R_TOKN_MAIN r_rule_tokn_deny_accs", 0);
  sTable( "r_met2_tokn_deny_accs", "R_TOKN_MAIN r_met2_tokn_deny_accs", 0);
  sTable( "r_resc_tokn_audit", "R_TOKN_MAIN r_resc_tokn_audit", 0);
  sTable( "r_coll_tokn_audit", "R_TOKN_MAIN r_coll_tokn_audit", 0);
  sTable( "r_data_tokn_audit", "R_TOKN_MAIN r_data_tokn_audit", 0);
  sTable( "r_rule_tokn_audit", "R_TOKN_MAIN r_rule_tokn_audit", 0);
  sTable( "r_met2_tokn_audit", "R_TOKN_MAIN r_met2_tokn_audit", 0);
  sTable( "r_resc_meta_main", "R_META_MAIN r_resc_meta_main", 0);
  sTable( "r_resc_grp_meta_main", "R_META_MAIN r_resc_grp_meta_main", 0);
  sTable( "r_coll_meta_main", "R_META_MAIN r_coll_meta_main", 0);
  sTable( "r_data_meta_main", "R_META_MAIN r_data_meta_main", 0);
  sTable( "r_rule_meta_main", "R_META_MAIN r_rule_meta_main", 0);
  sTable( "r_user_meta_main", "R_META_MAIN r_user_meta_main", 0);
  sTable( "r_met2_meta_main", "R_META_MAIN r_met2_meta_main", 0);

  sTable( "R_USER_GROUP",  "R_USER_GROUP", 0);
  sTable( "r_group_main", "R_USER_MAIN r_group_main", 0);

  sTable( "R_RULE_EXEC", "R_RULE_EXEC", 0);

  sTable( "R_OBJT_AUDIT", "R_OBJT_AUDIT", 0);

  sTable( "R_SERVER_LOAD", "R_SERVER_LOAD", 0);

  sTable( "R_SERVER_LOAD_DIGEST", "R_SERVER_LOAD_DIGEST", 0);

  sTable( "R_USER_AUTH", "R_USER_AUTH", 0);

  sTable( "R_RULE_BASE_MAP", "R_RULE_BASE_MAP", 0);
  sTable( "R_RULE_DVM_MAP", "R_RULE_DVM_MAP", 0);
  sTable( "R_RULE_FNM_MAP", "R_RULE_FNM_MAP", 0);
  sTable( "R_RULE_DVM",  "R_RULE_DVM", 0);
  sTable( "R_RULE_FNM",  "R_RULE_FNM", 0);

  sTable( "R_QUOTA_MAIN", "R_QUOTA_MAIN", 0);
  sTable( "R_QUOTA_USAGE", "R_QUOTA_USAGE", 0);

 sTable( "R_MICROSRVC_MAIN", "R_MICROSRVC_MAIN", 0);
 sTable( "R_MICROSRVC_VER", "R_MICROSRVC_VER", 0);

 sTable( "r_msrvc_deny_access", "R_OBJT_DENY_ACCESS r_msrvc_deny_access", 0);
 sTable( "r_msrvc_audit", "R_OBJT_AUDIT r_msrvc_audit", 0);
 sTable( "r_msrvc_meta_main", "R_META_MAIN r_msrvc_meta_main", 0);
 sTable( "r_msrvc_tokn_accs", "R_TOKN_MAIN r_msrvc_tokn_accs", 0);
 sTable( "r_msrvc_user_group", "R_USER_GROUP r_msrvc_user_group", 0);
 sTable( "r_msrvc_user_main", "R_USER_MAIN r_msrvc_user_main", 0);
 sTable( "r_msrvc_tokn_deny_accs", "R_TOKN_MAIN r_msrvc_tokn_deny_accs", 0);
 sTable( "r_msrvc_da_user_group", "R_USER_GROUP r_msrvc_da_user_group", 0);
 sTable( "r_msrvc_da_user_main", "R_USER_MAIN r_msrvc_da_user_main", 0);
 sTable( "r_msrvc_tokn_audit", "R_TOKN_MAIN r_msrvc_tokn_audit", 0);
 sTable( "r_msrvc_au_user_group", "R_USER_GROUP r_msrvc_au_user_group", 0);
 sTable( "r_msrvc_au_user_main", "R_USER_MAIN r_msrvc_au_user_main", 0);

 sTable( "R_TICKET_MAIN", "R_TICKET_MAIN", 0);
 sTable( "R_TICKET_ALLOWED_HOSTS", "R_TICKET_ALLOWED_HOSTS", 0);
 sTable( "R_TICKET_ALLOWED_USERS", "R_TICKET_ALLOWED_USERS", 0);
 sTable( "R_TICKET_ALLOWED_GROUPS", "R_TICKET_ALLOWED_GROUPS", 0);
 sTable( "r_ticket_coll_main", "R_COLL_MAIN r_ticket_coll_main", 1);
 sTable( "r_ticket_user_main", "R_USER_MAIN r_ticket_user_main", 1);
 sTable( "r_ticket_data_coll_main", "R_COLL_MAIN r_ticket_data_coll_main", 1);

 sTable( "r_data_filesystem_meta", "R_OBJT_FILESYSTEM_META r_data_filesystem_meta", 0);
 sTable( "r_coll_filesystem_meta", "R_OBJT_FILESYSTEM_META r_coll_filesystem_meta", 0);


  /* Map the #define values to tables and columns */

  sColumn( COL_ZONE_ID, "R_ZONE_MAIN", "zone_id");
  sColumn( COL_ZONE_NAME, "R_ZONE_MAIN", "zone_name");
  sColumn( COL_ZONE_TYPE, "R_ZONE_MAIN", "zone_type_name");
  sColumn( COL_ZONE_CONNECTION, "R_ZONE_MAIN", "zone_conn_string");
  sColumn( COL_ZONE_COMMENT, "R_ZONE_MAIN", "r_comment");
  sColumn( COL_ZONE_CREATE_TIME, "R_ZONE_MAIN", "create_ts");
  sColumn( COL_ZONE_MODIFY_TIME, "R_ZONE_MAIN", "modify_ts");

  sColumn( COL_USER_ID,   "R_USER_MAIN", "user_id");
  sColumn( COL_USER_NAME, "R_USER_MAIN", "user_name");
  sColumn( COL_USER_TYPE, "R_USER_MAIN", "user_type_name");
  sColumn( COL_USER_ZONE, "R_USER_MAIN", "zone_name");
  sColumn( COL_USER_INFO, "R_USER_MAIN", "user_info");
  sColumn( COL_USER_COMMENT,     "R_USER_MAIN", "r_comment");
  sColumn( COL_USER_CREATE_TIME, "R_USER_MAIN", "create_ts");
  sColumn( COL_USER_MODIFY_TIME, "R_USER_MAIN", "modify_ts");

  sColumn( COL_USER_AUTH_ID, "R_USER_AUTH", "user_id");
  sColumn( COL_USER_DN,   "R_USER_AUTH", "user_auth_name");

/* The following is for backward compatibility for clients, such as
   the PHP client, that might be asking for the previous COL_USER_DN
   (column id 205).  In iRODS 2.2+ there can be multiple DNs so the
   client will need to change to handle those.  But to avoid an error
   (altho returning invalid info), we just map the old 205 request to
   the comment field.
*/
  sColumn( COL_USER_DN_INVALID,"R_USER_MAIN", "r_comment"); /* compatibility */


  sColumn( COL_R_RESC_ID, "R_RESC_MAIN", "resc_id");
  sColumn( COL_R_RESC_NAME, "R_RESC_MAIN", "resc_name");
  sColumn( COL_R_ZONE_NAME, "R_RESC_MAIN", "zone_name");
  sColumn( COL_R_TYPE_NAME, "R_RESC_MAIN", "resc_type_name");
  sColumn( COL_R_CLASS_NAME, "R_RESC_MAIN", "resc_class_name");
  sColumn( COL_R_LOC, "R_RESC_MAIN", "resc_net");
  sColumn( COL_R_VAULT_PATH, "R_RESC_MAIN", "resc_def_path ");
  sColumn( COL_R_FREE_SPACE, "R_RESC_MAIN", "free_space");
  sColumn( COL_R_FREE_SPACE_TIME, "R_RESC_MAIN", "free_space_ts");
  sColumn( COL_R_RESC_INFO, "R_RESC_MAIN", "resc_info");
  sColumn( COL_R_RESC_COMMENT, "R_RESC_MAIN", "r_comment");
  sColumn( COL_R_RESC_STATUS, "R_RESC_MAIN", "resc_status");
  sColumn( COL_R_CREATE_TIME, "R_RESC_MAIN", "create_ts");
  sColumn( COL_R_MODIFY_TIME, "R_RESC_MAIN", "modify_ts ");

  sColumn( COL_D_DATA_ID, "R_DATA_MAIN", "data_id");
  sColumn( COL_D_COLL_ID, "R_DATA_MAIN", "coll_id");
  sColumn( COL_DATA_NAME, "R_DATA_MAIN", "data_name");
  sColumn( COL_DATA_REPL_NUM, "R_DATA_MAIN", "data_repl_num");
  sColumn( COL_DATA_VERSION, "R_DATA_MAIN", "data_version");
  sColumn( COL_DATA_TYPE_NAME, "R_DATA_MAIN", "data_type_name");
  sColumn( COL_DATA_SIZE, "R_DATA_MAIN", "data_size");
  sColumn( COL_D_RESC_GROUP_NAME, "R_DATA_MAIN", "resc_group_name");
  sColumn( COL_D_RESC_NAME, "R_DATA_MAIN", "resc_name");
  sColumn( COL_D_DATA_PATH, "R_DATA_MAIN", "data_path");
  sColumn( COL_D_OWNER_NAME, "R_DATA_MAIN", "data_owner_name");
  sColumn( COL_D_OWNER_ZONE, "R_DATA_MAIN", "data_owner_zone");
  sColumn( COL_D_REPL_STATUS, "R_DATA_MAIN", "data_is_dirty");
  sColumn( COL_D_DATA_STATUS, "R_DATA_MAIN", "data_status");
  sColumn( COL_D_DATA_CHECKSUM, "R_DATA_MAIN", "data_checksum");
  sColumn( COL_D_EXPIRY, "R_DATA_MAIN", "data_expiry_ts");
  sColumn( COL_D_MAP_ID, "R_DATA_MAIN", "data_map_id");
  sColumn( COL_D_COMMENTS, "R_DATA_MAIN", "r_comment");
  sColumn( COL_D_CREATE_TIME, "R_DATA_MAIN", "create_ts");
  sColumn( COL_D_MODIFY_TIME, "R_DATA_MAIN", "modify_ts");
  sColumn( COL_DATA_MODE, "R_DATA_MAIN", "data_mode");


  sColumn( COL_DATA_ACCESS_TYPE, "r_data_access", "access_type_id");
  sColumn( COL_DATA_ACCESS_NAME, "r_data_tokn_accs", "token_name");
  sColumn( COL_DATA_TOKEN_NAMESPACE, "r_data_tokn_accs", "token_namespace");
  sColumn( COL_DATA_ACCESS_USER_ID, "r_data_access", "user_id");
  sColumn( COL_DATA_ACCESS_DATA_ID, "r_data_access", "object_id");

  sColumn( COL_COLL_ACCESS_TYPE, "r_coll_access", "access_type_id");
  sColumn( COL_COLL_ACCESS_NAME, "r_coll_tokn_accs", "token_name");
  sColumn( COL_COLL_TOKEN_NAMESPACE, "r_coll_tokn_accs", "token_namespace");
  sColumn( COL_COLL_ACCESS_USER_ID, "r_coll_access", "user_id");
  sColumn( COL_COLL_ACCESS_COLL_ID, "r_coll_access", "object_id");

  sColumn( COL_RESC_ACCESS_TYPE, "r_resc_access", "access_type_id");
  sColumn( COL_RESC_ACCESS_NAME, "r_resc_tokn_accs", "token_name");
  sColumn( COL_RESC_TOKEN_NAMESPACE, "r_resc_tokn_accs", "token_namespace");
  sColumn( COL_RESC_ACCESS_USER_ID, "r_resc_access", "user_id");
  sColumn( COL_RESC_ACCESS_RESC_ID, "r_resc_access", "object_id");

  sColumn( COL_COLL_ID, "R_COLL_MAIN", "coll_id");
  sColumn( COL_COLL_NAME, "R_COLL_MAIN", "coll_name");
  sColumn( COL_COLL_PARENT_NAME, "R_COLL_MAIN", "parent_coll_name");
  sColumn( COL_COLL_OWNER_NAME, "R_COLL_MAIN", "coll_owner_name");
  sColumn( COL_COLL_OWNER_ZONE, "R_COLL_MAIN", "coll_owner_zone");
  sColumn( COL_COLL_MAP_ID, "R_COLL_MAIN", "coll_map_id");
  sColumn( COL_COLL_INHERITANCE, "R_COLL_MAIN", "coll_inheritance");
  sColumn( COL_COLL_COMMENTS, "R_COLL_MAIN", "r_comment");
  sColumn( COL_COLL_CREATE_TIME, "R_COLL_MAIN", "create_ts");
  sColumn( COL_COLL_MODIFY_TIME, "R_COLL_MAIN", "modify_ts");
  sColumn( COL_COLL_TYPE, "R_COLL_MAIN", "coll_type");
  sColumn( COL_COLL_INFO1, "R_COLL_MAIN", "coll_info1");
  sColumn( COL_COLL_INFO2, "R_COLL_MAIN", "coll_info2");

  sColumn( COL_META_DATA_ATTR_NAME, "r_data_meta_main", "meta_attr_name");
  sColumn( COL_META_DATA_ATTR_VALUE, "r_data_meta_main", "meta_attr_value");
  sColumn( COL_META_DATA_ATTR_UNITS, "r_data_meta_main", "meta_attr_unit");
  sColumn( COL_META_DATA_ATTR_ID,   "r_data_meta_main", "meta_id");
  sColumn( COL_META_DATA_CREATE_TIME, "r_data_meta_main", "create_ts");
  sColumn( COL_META_DATA_MODIFY_TIME, "r_data_meta_main", "modify_ts");
 
  sColumn( COL_META_COLL_ATTR_NAME, "r_coll_meta_main", "meta_attr_name");
  sColumn( COL_META_COLL_ATTR_VALUE, "r_coll_meta_main", "meta_attr_value");
  sColumn( COL_META_COLL_ATTR_UNITS, "r_coll_meta_main", "meta_attr_unit");
  sColumn( COL_META_COLL_ATTR_ID,   "r_coll_meta_main", "meta_id");
  sColumn( COL_META_COLL_CREATE_TIME, "r_coll_meta_main", "create_ts");
  sColumn( COL_META_COLL_MODIFY_TIME, "r_coll_meta_main", "modify_ts");

  sColumn( COL_META_NAMESPACE_COLL, "r_coll_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_DATA, "r_data_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_RESC, "r_resc_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_RESC_GROUP, "r_resc_grp_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_USER, "r_user_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_RULE, "r_rule_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_MSRVC, "r_msrvc_meta_main", "meta_namespace");
  sColumn( COL_META_NAMESPACE_MET2, "r_met2_meta_main", "meta_namespace");


  sColumn( COL_META_RESC_ATTR_NAME, "r_resc_meta_main", "meta_attr_name");
  sColumn( COL_META_RESC_ATTR_VALUE, "r_resc_meta_main", "meta_attr_value");
  sColumn( COL_META_RESC_ATTR_UNITS, "r_resc_meta_main", "meta_attr_unit");
  sColumn( COL_META_RESC_ATTR_ID,   "r_resc_meta_main", "meta_id");
  sColumn( COL_META_RESC_CREATE_TIME, "r_resc_meta_main", "create_ts");
  sColumn( COL_META_RESC_MODIFY_TIME, "r_resc_meta_main", "modify_ts");

  sColumn( COL_META_RESC_GROUP_ATTR_NAME, "r_resc_grp_meta_main", "meta_attr_name");
  sColumn( COL_META_RESC_GROUP_ATTR_VALUE, "r_resc_grp_meta_main", "meta_attr_value");
  sColumn( COL_META_RESC_GROUP_ATTR_UNITS, "r_resc_grp_meta_main", "meta_attr_unit");
  sColumn( COL_META_RESC_GROUP_ATTR_ID,   "r_resc_grp_meta_main", "meta_id");
  sColumn( COL_META_RESC_GROUP_CREATE_TIME, "r_resc_grp_meta_main", "create_ts");
  sColumn( COL_META_RESC_GROUP_MODIFY_TIME, "r_resc_grp_meta_main", "modify_ts");

  sColumn( COL_META_USER_ATTR_NAME, "r_user_meta_main", "meta_attr_name");
  sColumn( COL_META_USER_ATTR_VALUE, "r_user_meta_main", "meta_attr_value");
  sColumn( COL_META_USER_ATTR_UNITS, "r_user_meta_main", "meta_attr_unit");
  sColumn( COL_META_USER_ATTR_ID,   "r_user_meta_main", "meta_id");
  sColumn( COL_META_USER_CREATE_TIME, "r_user_meta_main", "create_ts");
  sColumn( COL_META_USER_MODIFY_TIME, "r_user_meta_main", "modify_ts");

  sColumn( COL_META_RULE_ATTR_NAME, "r_rule_meta_main", "meta_attr_name");
  sColumn( COL_META_RULE_ATTR_VALUE, "r_rule_meta_main", "meta_attr_value");
  sColumn( COL_META_RULE_ATTR_UNITS, "r_rule_meta_main", "meta_attr_unit");
  sColumn( COL_META_RULE_ATTR_ID,   "r_rule_meta_main", "meta_id");
  sColumn( COL_META_RULE_CREATE_TIME, "r_rule_meta_main", "create_ts");
  sColumn( COL_META_RULE_MODIFY_TIME, "r_rule_meta_main", "modify_ts");

  sColumn( COL_META_MSRVC_ATTR_NAME, "r_msrvc_meta_main", "meta_attr_name");
  sColumn( COL_META_MSRVC_ATTR_VALUE, "r_msrvc_meta_main", "meta_attr_value");
  sColumn( COL_META_MSRVC_ATTR_UNITS, "r_msrvc_meta_main", "meta_attr_unit");
  sColumn( COL_META_MSRVC_ATTR_ID,   "r_msrvc_meta_main", "meta_id");
  sColumn( COL_META_MSRVC_CREATE_TIME, "r_msrvc_meta_main", "create_ts");
  sColumn( COL_META_MSRVC_MODIFY_TIME, "r_msrvc_meta_main", "modify_ts");

  sColumn( COL_META_MET2_ATTR_NAME, "r_met2_meta_main", "meta_attr_name");
  sColumn( COL_META_MET2_ATTR_VALUE, "r_met2_meta_main", "meta_attr_value");
  sColumn( COL_META_MET2_ATTR_UNITS, "r_met2_meta_main", "meta_attr_unit");
  sColumn( COL_META_MET2_ATTR_ID,   "r_met2_meta_main", "meta_id");
  sColumn( COL_META_MET2_CREATE_TIME, "r_met2_meta_main", "create_ts");
  sColumn( COL_META_MET2_MODIFY_TIME, "r_met2_meta_main", "modify_ts");

  sColumn( COL_RESC_GROUP_RESC_ID, "R_RESC_GROUP", "resc_id");
  sColumn( COL_RESC_GROUP_NAME, "R_RESC_GROUP", "resc_group_name");
  sColumn( COL_RESC_GROUP_ID, "R_RESC_GROUP", "resc_group_id");

  sColumn( COL_USER_GROUP_ID, "R_USER_GROUP",  "group_user_id");
  sColumn( COL_USER_GROUP_NAME, "r_group_main", "user_name");

  sColumn( COL_RULE_EXEC_ID, "R_RULE_EXEC", "rule_exec_id");
  sColumn( COL_RULE_EXEC_NAME, "R_RULE_EXEC", "rule_name");
  sColumn( COL_RULE_EXEC_REI_FILE_PATH, "R_RULE_EXEC", "rei_file_path");
  sColumn( COL_RULE_EXEC_USER_NAME, "R_RULE_EXEC", "user_name");
  sColumn( COL_RULE_EXEC_ADDRESS, "R_RULE_EXEC", "exe_address");
  sColumn( COL_RULE_EXEC_TIME, "R_RULE_EXEC", "exe_time");
  sColumn( COL_RULE_EXEC_FREQUENCY, "R_RULE_EXEC", "exe_frequency");
  sColumn( COL_RULE_EXEC_PRIORITY, "R_RULE_EXEC", "priority");
  sColumn( COL_RULE_EXEC_ESTIMATED_EXE_TIME,"R_RULE_EXEC","estimated_exe_time");
  sColumn( COL_RULE_EXEC_NOTIFICATION_ADDR,"R_RULE_EXEC", "notification_addr");
  sColumn( COL_RULE_EXEC_LAST_EXE_TIME,"R_RULE_EXEC", "last_exe_time");
  sColumn( COL_RULE_EXEC_STATUS,"R_RULE_EXEC", "exe_status");

  sColumn(COL_TOKEN_NAMESPACE, "R_TOKN_MAIN", "token_namespace");
  sColumn(COL_TOKEN_ID, "R_TOKN_MAIN", "token_id");
  sColumn(COL_TOKEN_NAME, "R_TOKN_MAIN", "token_name");
  sColumn(COL_TOKEN_VALUE, "R_TOKN_MAIN", "token_value");
  sColumn(COL_TOKEN_VALUE2, "R_TOKN_MAIN", "token_value2");
  sColumn(COL_TOKEN_VALUE3, "R_TOKN_MAIN", "token_value3");
  sColumn(COL_TOKEN_COMMENT, "R_TOKN_MAIN", "r_comment");

  sColumn(COL_AUDIT_OBJ_ID,      "R_OBJT_AUDIT", "object_id");
  sColumn(COL_AUDIT_USER_ID,     "R_OBJT_AUDIT", "user_id");
  sColumn(COL_AUDIT_ACTION_ID,   "R_OBJT_AUDIT", "action_id");
  sColumn(COL_AUDIT_COMMENT,     "R_OBJT_AUDIT", "r_comment");
  sColumn(COL_AUDIT_CREATE_TIME, "R_OBJT_AUDIT", "create_ts");
  sColumn(COL_AUDIT_MODIFY_TIME, "R_OBJT_AUDIT", "modify_ts");

  sColumn(COL_COLL_USER_NAME, "r_coll_user_main", "user_name");
  sColumn(COL_COLL_USER_ZONE, "r_coll_user_main", "zone_name");

  sColumn(COL_DATA_USER_NAME, "r_data_user_main", "user_name");
  sColumn(COL_DATA_USER_ZONE, "r_data_user_main", "zone_name");

  sColumn(COL_RESC_USER_NAME, "r_resc_user_main", "user_name");
  sColumn(COL_RESC_USER_ZONE, "r_resc_user_main", "zone_name");

  sColumn(COL_SL_HOST_NAME, "R_SERVER_LOAD", "host_name");
  sColumn(COL_SL_RESC_NAME, "R_SERVER_LOAD", "resc_name");
  sColumn(COL_SL_CPU_USED, "R_SERVER_LOAD", "cpu_used");
  sColumn(COL_SL_MEM_USED, "R_SERVER_LOAD", "mem_used");
  sColumn(COL_SL_SWAP_USED, "R_SERVER_LOAD", "swap_used");
  sColumn(COL_SL_RUNQ_LOAD, "R_SERVER_LOAD", "runq_load");
  sColumn(COL_SL_DISK_SPACE, "R_SERVER_LOAD", "disk_space");
  sColumn(COL_SL_NET_INPUT, "R_SERVER_LOAD", "net_input");
  sColumn(COL_SL_NET_OUTPUT, "R_SERVER_LOAD", "net_output");
  sColumn(COL_SL_CREATE_TIME, "R_SERVER_LOAD", "create_ts");

  sColumn(COL_SLD_RESC_NAME, "R_SERVER_LOAD_DIGEST", "resc_name");
  sColumn(COL_SLD_LOAD_FACTOR, "R_SERVER_LOAD_DIGEST", "load_factor");
  sColumn(COL_SLD_CREATE_TIME, "R_SERVER_LOAD_DIGEST", "create_ts");

  sColumn(COL_RULE_ID,         "R_RULE_MAIN", "rule_id");
  sColumn(COL_RULE_VERSION,    "R_RULE_MAIN", "rule_version");
  sColumn(COL_RULE_BASE_NAME,  "R_RULE_MAIN", "rule_base_name");
  sColumn(COL_RULE_NAME,       "R_RULE_MAIN", "rule_name");
  sColumn(COL_RULE_EVENT,      "R_RULE_MAIN", "rule_event");
  sColumn(COL_RULE_CONDITION,  "R_RULE_MAIN", "rule_condition");
  sColumn(COL_RULE_BODY,       "R_RULE_MAIN", "rule_body");
  sColumn(COL_RULE_RECOVERY,   "R_RULE_MAIN", "rule_recovery");
  sColumn(COL_RULE_STATUS,     "R_RULE_MAIN", "rule_status");
  sColumn(COL_RULE_OWNER_NAME, "R_RULE_MAIN", "rule_owner_name");
  sColumn(COL_RULE_OWNER_ZONE, "R_RULE_MAIN", "rule_owner_zone");
  sColumn(COL_RULE_DESCR_1,    "R_RULE_MAIN", "rule_descr_1");
  sColumn(COL_RULE_DESCR_2,    "R_RULE_MAIN", "rule_descr_2");
  sColumn(COL_RULE_INPUT_PARAMS,    "R_RULE_MAIN", "input_params");
  sColumn(COL_RULE_OUTPUT_PARAMS,   "R_RULE_MAIN", "output_params");
  sColumn(COL_RULE_DOLLAR_VARS,     "R_RULE_MAIN", "dollar_vars");
  sColumn(COL_RULE_ICAT_ELEMENTS,   "R_RULE_MAIN", "icat_elements");
  sColumn(COL_RULE_SIDEEFFECTS,     "R_RULE_MAIN", "sideeffects");
  sColumn(COL_RULE_COMMENT,    "R_RULE_MAIN", "r_comment");
  sColumn(COL_RULE_CREATE_TIME,"R_RULE_MAIN", "create_ts");
  sColumn(COL_RULE_MODIFY_TIME,"R_RULE_MAIN", "modify_ts");

  sColumn(COL_RULE_BASE_MAP_VERSION,    "R_RULE_BASE_MAP", "map_version"); 
  sColumn(COL_RULE_BASE_MAP_PRIORITY,    "R_RULE_BASE_MAP", "map_priority"); 
  sColumn(COL_RULE_BASE_MAP_BASE_NAME,  "R_RULE_BASE_MAP", "map_base_name");
  sColumn(COL_RULE_BASE_MAP_OWNER_NAME, "R_RULE_BASE_MAP", "map_owner_name");
  sColumn(COL_RULE_BASE_MAP_OWNER_ZONE, "R_RULE_BASE_MAP", "map_owner_zone");
  sColumn(COL_RULE_BASE_MAP_COMMENT,    "R_RULE_BASE_MAP", "r_comment");
  sColumn(COL_RULE_BASE_MAP_CREATE_TIME,"R_RULE_BASE_MAP", "create_ts");
  sColumn(COL_RULE_BASE_MAP_MODIFY_TIME,"R_RULE_BASE_MAP", "modify_ts");

  sColumn(COL_DVM_ID,           "R_RULE_DVM", "dvm_id");
  sColumn(COL_DVM_VERSION,      "R_RULE_DVM", "dvm_version");
  sColumn(COL_DVM_BASE_NAME,    "R_RULE_DVM", "dvm_base_name");
  sColumn(COL_DVM_EXT_VAR_NAME, "R_RULE_DVM", "dvm_ext_var_name");
  sColumn(COL_DVM_CONDITION,    "R_RULE_DVM", "dvm_condition");
  sColumn(COL_DVM_INT_MAP_PATH, "R_RULE_DVM", "dvm_int_map_path");
  sColumn(COL_DVM_STATUS,       "R_RULE_DVM", "dvm_status");
  sColumn(COL_DVM_OWNER_NAME,   "R_RULE_DVM", "dvm_owner_name");
  sColumn(COL_DVM_OWNER_ZONE,   "R_RULE_DVM", "dvm_owner_zone");
  sColumn(COL_DVM_COMMENT,      "R_RULE_DVM", "r_comment");
  sColumn(COL_DVM_CREATE_TIME,  "R_RULE_DVM", "create_ts");
  sColumn(COL_DVM_MODIFY_TIME,  "R_RULE_DVM", "modify_ts");

  sColumn(COL_DVM_BASE_MAP_VERSION,    "R_RULE_DVM_MAP", "map_dvm_version"); 
  sColumn(COL_DVM_BASE_MAP_BASE_NAME,  "R_RULE_DVM_MAP", "map_dvm_base_name");
  sColumn(COL_DVM_BASE_MAP_OWNER_NAME, "R_RULE_DVM_MAP", "map_owner_name");
  sColumn(COL_DVM_BASE_MAP_OWNER_ZONE, "R_RULE_DVM_MAP", "map_owner_zone");
  sColumn(COL_DVM_BASE_MAP_COMMENT,    "R_RULE_DVM_MAP", "r_comment");
  sColumn(COL_DVM_BASE_MAP_CREATE_TIME,"R_RULE_DVM_MAP", "create_ts");
  sColumn(COL_DVM_BASE_MAP_MODIFY_TIME,"R_RULE_DVM_MAP", "modify_ts");

  sColumn(COL_FNM_ID,           "R_RULE_FNM", "fnm_id");
  sColumn(COL_FNM_VERSION,      "R_RULE_FNM", "fnm_version");
  sColumn(COL_FNM_BASE_NAME,    "R_RULE_FNM", "fnm_base_name");
  sColumn(COL_FNM_EXT_FUNC_NAME,"R_RULE_FNM", "fnm_ext_func_name");
  sColumn(COL_FNM_INT_FUNC_NAME,"R_RULE_FNM", "fnm_int_func_name");
  sColumn(COL_FNM_STATUS,       "R_RULE_FNM", "fnm_status");
  sColumn(COL_FNM_OWNER_NAME,   "R_RULE_FNM", "fnm_owner_name");
  sColumn(COL_FNM_OWNER_ZONE,   "R_RULE_FNM", "fnm_owner_zone");
  sColumn(COL_FNM_COMMENT,      "R_RULE_FNM", "r_comment");
  sColumn(COL_FNM_CREATE_TIME,  "R_RULE_FNM", "create_ts");
  sColumn(COL_FNM_MODIFY_TIME,  "R_RULE_FNM", "modify_ts");

  sColumn(COL_FNM_BASE_MAP_VERSION,    "R_RULE_FNM_MAP", "map_fnm_version"); 
  sColumn(COL_FNM_BASE_MAP_BASE_NAME,  "R_RULE_FNM_MAP", "map_fnm_base_name");
  sColumn(COL_FNM_BASE_MAP_OWNER_NAME, "R_RULE_FNM_MAP", "map_owner_name");
  sColumn(COL_FNM_BASE_MAP_OWNER_ZONE, "R_RULE_FNM_MAP", "map_owner_zone");
  sColumn(COL_FNM_BASE_MAP_COMMENT,    "R_RULE_FNM_MAP", "r_comment");
  sColumn(COL_FNM_BASE_MAP_CREATE_TIME,"R_RULE_FNM_MAP", "create_ts");
  sColumn(COL_FNM_BASE_MAP_MODIFY_TIME,"R_RULE_FNM_MAP", "modify_ts");

  sColumn(COL_QUOTA_USER_ID, "R_QUOTA_MAIN", "user_id");
  sColumn(COL_QUOTA_RESC_ID, "R_QUOTA_MAIN", "resc_id");
  sColumn(COL_QUOTA_LIMIT,   "R_QUOTA_MAIN", "quota_limit");
  sColumn(COL_QUOTA_OVER,    "R_QUOTA_MAIN", "quota_over");
  sColumn(COL_QUOTA_MODIFY_TIME,"R_QUOTA_MAIN", "modify_ts");

  sColumn(COL_QUOTA_USAGE_USER_ID, "R_QUOTA_USAGE", "user_id");
  sColumn(COL_QUOTA_USAGE_RESC_ID, "R_QUOTA_USAGE", "resc_id");
  sColumn(COL_QUOTA_USAGE,   "R_QUOTA_USAGE", "quota_usage");
  sColumn(COL_QUOTA_USAGE_MODIFY_TIME,"R_QUOTA_USAGE", "modify_ts");

  sColumn( COL_QUOTA_USER_NAME, "r_quota_user_main", "user_name");
  sColumn( COL_QUOTA_USER_TYPE, "r_quota_user_group", "user_type_name");
  sColumn( COL_QUOTA_RESC_NAME, "r_quota_resc_main", "resc_name");
  sColumn( COL_QUOTA_USER_ZONE, "r_quota_user_main", "zone_name");

  sColumn(COL_MSRVC_ID,           "R_MICROSRVC_MAIN", "msrvc_id");
  sColumn(COL_MSRVC_MODULE_NAME,         "R_MICROSRVC_MAIN", "msrvc_module_name");
  sColumn(COL_MSRVC_NAME,         "R_MICROSRVC_MAIN", "msrvc_name");
  sColumn(COL_MSRVC_SIGNATURE,    "R_MICROSRVC_MAIN", "msrvc_signature");
  sColumn(COL_MSRVC_DOXYGEN,      "R_MICROSRVC_MAIN", "msrvc_doxygen");
  sColumn(COL_MSRVC_VARIATIONS,   "R_MICROSRVC_MAIN", "msrvc_variations");
  sColumn(COL_MSRVC_OWNER_NAME,   "R_MICROSRVC_MAIN", "msrvc_owner_name");
  sColumn(COL_MSRVC_OWNER_ZONE,   "R_MICROSRVC_MAIN", "msrvc_owner_zone");
  sColumn(COL_MSRVC_COMMENT,      "R_MICROSRVC_MAIN", "r_comment");
  sColumn(COL_MSRVC_CREATE_TIME,  "R_MICROSRVC_MAIN", "create_ts");
  sColumn(COL_MSRVC_MODIFY_TIME,  "R_MICROSRVC_MAIN", "modify_ts");

  sColumn(COL_MSRVC_VERSION,    "R_MICROSRVC_VER", "msrvc_version"); 
  sColumn(COL_MSRVC_HOST,  "R_MICROSRVC_VER", "msrvc_host");
  sColumn(COL_MSRVC_LOCATION,  "R_MICROSRVC_VER", "msrvc_location");
  sColumn(COL_MSRVC_LANGUAGE,  "R_MICROSRVC_VER", "msrvc_language");
  sColumn(COL_MSRVC_TYPE_NAME,  "R_MICROSRVC_VER", "msrvc_type_name");
  sColumn(COL_MSRVC_STATUS,       "R_MICROSRVC_VER", "msrvc_status");
  sColumn(COL_MSRVC_VER_OWNER_NAME, "R_MICROSRVC_VER", "msrvc_owner_name");
  sColumn(COL_MSRVC_VER_OWNER_ZONE, "R_MICROSRVC_VER", "msrvc_owner_zone");
  sColumn(COL_MSRVC_VER_COMMENT,    "R_MICROSRVC_VER", "r_comment");
  sColumn(COL_MSRVC_VER_CREATE_TIME,"R_MICROSRVC_VER", "create_ts");
  sColumn(COL_MSRVC_VER_MODIFY_TIME,"R_MICROSRVC_VER", "modify_ts");

  sColumn( COL_META_ACCESS_TYPE, "r_meta_access", "access_type_id");
  sColumn( COL_META_ACCESS_NAME, "r_meta_tokn_accs", "token_name");
  sColumn( COL_META_TOKEN_NAMESPACE, "r_meta_tokn_accs", "token_namespace");
  sColumn( COL_META_ACCESS_USER_ID, "r_meta_access", "user_id");
  sColumn( COL_META_ACCESS_META_ID, "r_meta_access", "object_id");

  sColumn( COL_RESC_ACCESS_TYPE, "r_resc_access", "access_type_id");
  sColumn( COL_RESC_ACCESS_NAME, "r_resc_tokn_accs", "token_name");
  sColumn( COL_RESC_TOKEN_NAMESPACE, "r_resc_tokn_accs", "token_namespace");
  sColumn( COL_RESC_ACCESS_USER_ID, "r_resc_access", "user_id");
  sColumn( COL_RESC_ACCESS_RESC_ID, "r_resc_access", "object_id");

  sColumn( COL_RULE_ACCESS_TYPE, "r_rule_access", "access_type_id");
  sColumn( COL_RULE_ACCESS_NAME, "r_rule_tokn_accs", "token_name");
  sColumn( COL_RULE_TOKEN_NAMESPACE, "r_rule_tokn_accs", "token_namespace");
  sColumn( COL_RULE_ACCESS_USER_ID, "r_rule_access", "user_id");
  sColumn( COL_RULE_ACCESS_RULE_ID, "r_rule_access", "object_id");

  sColumn( COL_MSRVC_ACCESS_TYPE, "r_msrvc_access", "access_type_id");
  sColumn( COL_MSRVC_ACCESS_NAME, "r_msrvc_tokn_accs", "token_name");
  sColumn( COL_MSRVC_TOKEN_NAMESPACE, "r_msrvc_tokn_accs", "token_namespace");
  sColumn( COL_MSRVC_ACCESS_USER_ID, "r_msrvc_access", "user_id");
  sColumn( COL_MSRVC_ACCESS_MSRVC_ID, "r_msrvc_access", "object_id");

  sColumn( COL_TICKET_ID, "R_TICKET_MAIN", "ticket_id");
  sColumn( COL_TICKET_STRING, "R_TICKET_MAIN", "ticket_string");
  sColumn( COL_TICKET_TYPE, "R_TICKET_MAIN", "ticket_type");
  sColumn( COL_TICKET_USER_ID, "R_TICKET_MAIN", "user_id");
  sColumn( COL_TICKET_OBJECT_ID, "R_TICKET_MAIN", "object_id");
  sColumn( COL_TICKET_OBJECT_TYPE, "R_TICKET_MAIN", "object_type");
  sColumn( COL_TICKET_USES_LIMIT, "R_TICKET_MAIN", "uses_limit");
  sColumn( COL_TICKET_USES_COUNT, "R_TICKET_MAIN", "uses_count");
  sColumn( COL_TICKET_WRITE_FILE_LIMIT, "R_TICKET_MAIN", "write_file_limit");
  sColumn( COL_TICKET_WRITE_FILE_COUNT, "R_TICKET_MAIN", "write_file_count");
  sColumn( COL_TICKET_WRITE_BYTE_LIMIT, "R_TICKET_MAIN", "write_byte_limit");
  sColumn( COL_TICKET_WRITE_BYTE_COUNT, "R_TICKET_MAIN", "write_byte_count");
  sColumn( COL_TICKET_EXPIRY_TS, "R_TICKET_MAIN", "ticket_expiry_ts");
  sColumn( COL_TICKET_CREATE_TIME, "R_TICKET_MAIN", "create_time");
  sColumn( COL_TICKET_MODIFY_TIME, "R_TICKET_MAIN", "modify_time");

  sColumn( COL_TICKET_ALLOWED_HOST, "R_TICKET_ALLOWED_HOSTS", "host");
  sColumn( COL_TICKET_ALLOWED_HOST_TICKET_ID, "R_TICKET_ALLOWED_HOSTS", "ticket_id");
  sColumn( COL_TICKET_ALLOWED_USER_NAME, "R_TICKET_ALLOWED_USERS", "user_name");
  sColumn( COL_TICKET_ALLOWED_USER_TICKET_ID, "R_TICKET_ALLOWED_USERS", "ticket_id");
  sColumn( COL_TICKET_ALLOWED_GROUP_NAME, "R_TICKET_ALLOWED_GROUPS", "group_name");
  sColumn( COL_TICKET_ALLOWED_GROUP_TICKET_ID, "R_TICKET_ALLOWED_GROUPS", "ticket_id");

  sColumn( COL_TICKET_DATA_NAME, "R_DATA_MAIN", "data_name");
  sColumn( COL_TICKET_COLL_NAME, "r_ticket_coll_main", "coll_name");
  sColumn( COL_TICKET_OWNER_NAME, "r_ticket_user_main", "user_name");
  sColumn( COL_TICKET_OWNER_ZONE, "r_ticket_user_main", "zone_name");

  sColumn( COL_TICKET_DATA_COLL_NAME, "r_ticket_data_coll_main", "coll_name");

  sColumn( COL_COLL_FILEMETA_OBJ_ID, "r_coll_filesystem_meta", "object_id");
  sColumn( COL_COLL_FILEMETA_UID, "r_coll_filesystem_meta", "file_uid");
  sColumn( COL_COLL_FILEMETA_GID, "r_coll_filesystem_meta", "file_gid");
  sColumn( COL_COLL_FILEMETA_OWNER, "r_coll_filesystem_meta", "file_owner");
  sColumn( COL_COLL_FILEMETA_GROUP, "r_coll_filesystem_meta", "file_group");
  sColumn( COL_COLL_FILEMETA_MODE, "r_coll_filesystem_meta", "file_mode");
  sColumn( COL_COLL_FILEMETA_CTIME, "r_coll_filesystem_meta", "file_ctime");
  sColumn( COL_COLL_FILEMETA_MTIME, "r_coll_filesystem_meta", "file_mtime");
  sColumn( COL_COLL_FILEMETA_SOURCE_PATH, "r_coll_filesystem_meta", "file_source_path");
  sColumn( COL_COLL_FILEMETA_CREATE_TIME, "r_coll_filesystem_meta", "create_ts");
  sColumn( COL_COLL_FILEMETA_MODIFY_TIME, "r_coll_filesystem_meta", "modify_ts");

  sColumn( COL_DATA_FILEMETA_OBJ_ID, "r_data_filesystem_meta", "object_id");
  sColumn( COL_DATA_FILEMETA_UID, "r_data_filesystem_meta", "file_uid");
  sColumn( COL_DATA_FILEMETA_GID, "r_data_filesystem_meta", "file_gid");
  sColumn( COL_DATA_FILEMETA_OWNER, "r_data_filesystem_meta", "file_owner");
  sColumn( COL_DATA_FILEMETA_GROUP, "r_data_filesystem_meta", "file_group");
  sColumn( COL_DATA_FILEMETA_MODE, "r_data_filesystem_meta", "file_mode");
  sColumn( COL_DATA_FILEMETA_CTIME, "r_data_filesystem_meta", "file_ctime");
  sColumn( COL_DATA_FILEMETA_MTIME, "r_data_filesystem_meta", "file_mtime");
  sColumn( COL_DATA_FILEMETA_SOURCE_PATH, "r_data_filesystem_meta", "file_source_path");
  sColumn( COL_DATA_FILEMETA_CREATE_TIME, "r_data_filesystem_meta", "create_ts");
  sColumn( COL_DATA_FILEMETA_MODIFY_TIME, "r_data_filesystem_meta", "modify_ts");

  /* Define the Foreign Key links between tables */

  sFklink("R_COLL_MAIN", "R_DATA_MAIN", "R_COLL_MAIN.coll_id = R_DATA_MAIN.coll_id");
  sFklink("R_RESC_GROUP", "R_RESC_MAIN", "R_RESC_GROUP.resc_id = R_RESC_MAIN.resc_id");
  sFklink("R_RESC_MAIN", "r_resc_metamap", "R_RESC_MAIN.resc_id = r_resc_metamap.object_id");
  sFklink("R_RESC_MAIN", "R_DATA_MAIN", "R_RESC_MAIN.resc_name = R_DATA_MAIN.resc_name");
  sFklink("R_RESC_GROUP", "r_resc_grp_metamap", "R_RESC_GROUP.resc_group_id = r_resc_grp_metamap.object_id");
  sFklink("R_COLL_MAIN", "r_coll_metamap", "R_COLL_MAIN.coll_id = r_coll_metamap.object_id");
  sFklink("R_DATA_MAIN", "r_data_metamap", "R_DATA_MAIN.data_id = r_data_metamap.object_id");
  sFklink("R_RULE_MAIN", "r_rule_metamap", "R_RULE_MAIN.rule_id = r_rule_metamap.object_id");
  sFklink("R_USER_MAIN", "r_user_metamap", "R_USER_MAIN.user_id = r_user_metamap.object_id");
  sFklink("r_met2_main", "r_met2_metamap", "r_met2_main.meta_id = r_met2_metamap.object_id");
  sFklink("R_RESC_MAIN", "r_resc_access", "R_RESC_MAIN.resc_id = r_resc_access.object_id");
  sFklink("R_COLL_MAIN", "r_coll_access", "R_COLL_MAIN.coll_id = r_coll_access.object_id");
  sFklink("R_DATA_MAIN", "r_data_access", "R_DATA_MAIN.data_id = r_data_access.object_id");
  sFklink("R_RULE_MAIN", "r_rule_access", "R_RULE_MAIN.rule_id = r_rule_access.object_id");
  sFklink("r_met2_main", "r_met2_access", "r_met2_main.meta_id = r_met2_access.object_id");
  sFklink("R_RESC_MAIN", "r_resc_deny_access", "R_RESC_MAIN.resc_id = r_resc_deny_access.object_id");
  sFklink("R_COLL_MAIN", "r_coll_deny_access", "R_COLL_MAIN.coll_id = r_coll_deny_access.object_id");
  sFklink("R_DATA_MAIN", "r_data_deny_access", "R_DATA_MAIN.data_id = r_data_deny_access.object_id");
  sFklink("R_RULE_MAIN", "r_rule_deny_access", "R_RULE_MAIN.rule_id = r_rule_deny_access.object_id");
  sFklink("r_met2_main", "r_met2_deny_access", "r_met2_main.meta_id = r_met2_deny_access.object_id");
  sFklink("R_RESC_MAIN", "r_resc_audit", "R_RESC_MAIN.resc_id = r_resc_audit.object_id");
  sFklink("R_COLL_MAIN", "r_coll_audit", "R_COLL_MAIN.coll_id = r_coll_audit.object_id");
  sFklink("R_DATA_MAIN", "r_data_audit", "R_DATA_MAIN.data_id = r_data_audit.object_id");
  sFklink("R_RULE_MAIN", "r_rule_audit", "R_RULE_MAIN.rule_id = r_rule_audit.object_id");
  sFklink("r_met2_main", "r_met2_audit", "r_met2_main.meta_id = r_met2_audit.object_id.meta_id");
  sFklink("r_resc_metamap", "r_resc_meta_main",  "r_resc_metamap.meta_id = r_resc_meta_main.meta_id");
  sFklink("r_resc_grp_metamap", "r_resc_grp_meta_main",  "r_resc_grp_metamap.meta_id = r_resc_grp_meta_main.meta_id");
  sFklink("r_coll_metamap", "r_coll_meta_main",  "r_coll_metamap.meta_id = r_coll_meta_main.meta_id");
  sFklink("r_data_metamap", "r_data_meta_main",  "r_data_metamap.meta_id = r_data_meta_main.meta_id");
  sFklink("r_rule_metamap", "r_rule_meta_main",  "r_rule_metamap.meta_id = r_rule_meta_main.meta_id");
  sFklink("r_user_metamap", "r_user_meta_main",  "r_user_metamap.meta_id = r_user_meta_main.meta_id");
  sFklink("r_met2_metamap", "r_met2_meta_main",  "r_met2_metamap.object_id = r_met2_meta_main.meta_id");
  sFklink("r_resc_access", "r_resc_tokn_accs",  "r_resc_access.access_type_id = r_resc_tokn_accs.token_id");
  sFklink("r_resc_access", "r_resc_user_group", "r_resc_access.user_id = r_resc_user_group.group_user_id");
  sFklink("r_coll_access", "r_coll_tokn_accs",  "r_coll_access.access_type_id = r_coll_tokn_accs.token_id");
  sFklink("r_coll_access", "r_coll_user_group", "r_coll_access.user_id = r_coll_user_group.group_user_id");
  sFklink("r_data_access", "r_data_tokn_accs",  "r_data_access.access_type_id = r_data_tokn_accs.token_id");
  sFklink("r_data_access", "r_data_user_group", "r_data_access.user_id = r_data_user_group.group_user_id");
  sFklink("r_rule_access", "r_rule_tokn_accs",  "r_rule_access.access_typ_id = r_rule_tokn_accs.token_id");
  sFklink("r_rule_access", "r_rule_user_group", "r_rule_access.user_id = r_rule_user_group.group_user_id");
  sFklink("r_met2_access", "r_met2_tokn_accs",  "r_met2_access.access_typ_id = r_met2_tokn_accs.token_id");
  sFklink("r_met2_access", "r_met2_user_group", "r_met2_access.user_id = r_met2_user_group.group_user_id");
  sFklink("r_resc_deny_access", "r_resc_tokn_deny_accs", "r_resc_deny_access.access_typ_id = r_resc_tokn_deny_accs.token_id");
  sFklink("r_resc_deny_access", "r_resc_da_user_group",     "r_resc_deny_access.user_id = r_resc_da_user_group.group_user_id");
  sFklink("r_coll_deny_access", "r_coll_tokn_deny_accs", "r_coll_deny_access.access_typ_id = r_coll_tokn_deny_accs.token_id");
  sFklink("r_coll_deny_access", "r_coll_da_user_group",     "r_coll_deny_access.user_id = r_coll_da_user_group.group_user_id");
  sFklink("r_data_deny_access", "r_data_tokn_deny_accs", "r_data_deny_access.access_typ_id = r_data_tokn_deny_accs.token_id");
  sFklink("r_data_deny_access", "r_data_da_user_group",     "r_data_deny_access.user_id = r_data_da_user_group.group_user_id");
  sFklink("r_rule_deny_access", "r_rule_tokn_deny_accs", "r_rule_deny_access.access_typ_id = r_rule_tokn_deny_accs.token_id");
  sFklink("r_rule_deny_access", "r_rule_da_user_group",     "r_rule_deny_access.user_id = r_rule_da_user_group.group_user_id");
  sFklink("r_met2_deny_access", "r_met2_tokn_deny_accs", "r_met2_deny_access.access_typ_id = r_met2_tokn_deny_accs.token_id");
  sFklink("r_met2_deny_access", "r_met2_da_user_group",     "r_met2_deny_access.user_id = r_met2_da_user_group.group_user_id");
  sFklink("r_resc_audit", "r_resc_tokn_audit", "r_resc_audit.action_id = r_resc_tokn_audit.token_id");
  sFklink("r_resc_audit", "r_resc_au_user_group", "r_resc_audit.user_id = r_resc_au_user_group.group_user_id");
  sFklink("r_coll_audit", "r_coll_tokn_audit", "r_coll_audit.action_id = r_coll_tokn_audit.token_id");
  sFklink("r_coll_audit", "r_coll_au_user_group", "r_coll_audit.user_id = r_coll_au_user_group.group_user_id");
  sFklink("r_data_audit", "r_data_tokn_audit", "r_data_audit.action_id = r_data_tokn_audit.token_id");
  sFklink("r_data_audit", "r_data_au_user_group", "r_data_audit.user_id = r_data_au_user_group.group_user_id");
  sFklink("r_rule_audit", "r_rule_tokn_audit", "r_rule_audit.action_id = r_rule_tokn_audit.token_id");
  sFklink("r_rule_audit", "r_rule_au_user_group", "r_rule_audit.user_id = r_rule_au_user_group.group_user_id");
  sFklink("r_met2_audit", "r_met2_tokn_audit", "r_met2_audit.action_id = r_met2_tokn_audit.token_id");
  sFklink("r_met2_audit", "r_met2_au_user_group", "r_met2_audit.user_id = r_met2_au_user_group.group_user_id");
  sFklink("r_resc_user_group", "r_resc_user_main", "r_resc_user_group.user_id = r_resc_user_main.user_id");
  sFklink("r_coll_user_group", "r_coll_user_main", "r_coll_user_group.user_id = r_coll_user_main.user_id");
  sFklink("r_data_user_group", "r_data_user_main", "r_data_user_group.user_id = r_data_user_main.user_id");
  sFklink("r_rule_user_group", "r_rule_user_main", "r_rule_user_group.user_id = r_rule_user_main.user_id");
  sFklink("r_met2_user_group", "r_met2_user_main", "r_met2_user_group.user_id = r_met2_user_main.user_id");
  sFklink("r_resc_da_user_group", "r_resc_da_user_main", "r_resc_da_user_group.user_id = r_resc_da_user_main.user_id");
  sFklink("r_coll_da_user_group", "r_coll_da_user_main", "r_coll_da_user_group.user_id = r_coll_da_user_main.user_id");
  sFklink("r_data_da_user_group", "r_data_da_user_main", "r_data_da_user_group.user_id = r_data_da_user_main.user_id");
  sFklink("r_rule_da_user_group", "r_rule_da_user_main", "r_rule_da_user_group.user_id = r_rule_da_user_main.user_id");
  sFklink("r_met2_da_user_group", "r_met2_da_user_main", "r_met2_da_user_group.user_id = r_met2_da_user_main.user_id");
  sFklink("r_resc_au_user_group", "r_resc_au_user_main", "r_resc_au_user_group.user_id = r_resc_au_user_main.user_id");
  sFklink("r_coll_au_user_group", "r_coll_au_user_main", "r_coll_au_user_group.user_id = r_coll_au_user_main.user_id");
  sFklink("r_data_au_user_group", "r_data_au_user_main", "r_data_au_user_group.user_id = r_data_au_user_main.user_id");
  sFklink("r_rule_au_user_group", "r_rule_au_user_main", "r_rule_au_user_group.user_id = r_rule_au_user_main.user_id");
  sFklink("r_met2_au_user_group", "r_met2_au_user_main", "r_met2_au_user_group.user_id = r_met2_au_user_main.user_id");
  sFklink("R_USER_MAIN", "R_USER_PASSWORD", "R_USER_MAIN.user_id = R_USER_PASSWORD.user_id");
  sFklink("R_USER_MAIN", "R_USER_AUTH", "R_USER_MAIN.user_id = R_USER_AUTH.user_id");
  sFklink("R_USER_MAIN", "R_USER_SESSION_KEY", "R_USER_MAIN.user_id = R_USER_SESSION_KEY.user_id");
  sFklink("R_USER_MAIN", "r_data_access", "R_USER_MAIN.user_id = r_data_access.user_id");
  sFklink("R_USER_MAIN", "R_USER_GROUP", "R_USER_MAIN.user_id = R_USER_GROUP.user_id");
  sFklink("R_USER_GROUP", "r_group_main", "R_USER_GROUP.group_user_id = r_group_main.user_id");
  sFklink("R_USER_MAIN", "R_OBJT_AUDIT", "R_USER_MAIN.user_id = R_OBJT_AUDIT.user_id");

  sFklink("R_QUOTA_MAIN", "r_quota_user_main", "R_QUOTA_MAIN.user_id = r_quota_user_main.user_id");
  sFklink("R_QUOTA_MAIN", "r_quota_resc_main", "R_QUOTA_MAIN.resc_id = r_quota_resc_main.resc_id");
  sFklink("R_QUOTA_MAIN", "r_quota_user_group", "R_QUOTA_MAIN.user_id = r_quota_user_group.user_id");
  sFklink("R_QUOTA_USAGE", "r_quota_user_main", "R_QUOTA_USAGE.user_id = r_quota_user_main.user_id");
  sFklink("R_QUOTA_USAGE", "r_quota_resc_main", "R_QUOTA_USAGE.resc_id = r_quota_resc_main.resc_id");
  sFklink("R_QUOTA_USAGE", "r_quota_user_group", "R_QUOTA_USAGE.user_id = r_quota_user_group.user_id");
  sFklink("R_RULE_BASE_MAP", "R_RULE_MAIN", "R_RULE_BASE_MAP.rule_id = R_RULE_MAIN.rule_id");
  sFklink("R_RULE_DVM_MAP", "R_RULE_DVM", "R_RULE_DVM_MAP.dvm_id = R_RULE_DVM.dvm_id");
  sFklink("R_RULE_FNM_MAP", "R_RULE_FNM", "R_RULE_FNM_MAP.fnm_id = R_RULE_FNM.fnm_id");


  sFklink("R_MICROSRVC_MAIN", "R_MICROSRVC_VER", "R_MICROSRVC_MAIN.msrvc_id = R_MICROSRVC_VER.msrvc_id");
  sFklink("R_MICROSRVC_MAIN", "r_msrvc_metamap", "R_MICROSRVC_MAIN.msrvc_id = r_msrvc_metamap.object_id");
  sFklink("r_msrvc_metamap", "r_msrvc_meta_main",  "r_msrvc_metamap.meta_id = r_msrvc_meta_main.meta_id");
  sFklink("R_MICROSRVC_MAIN", "r_msrvc_access", "R_MICROSRVC_MAIN.msrvc_id = r_msrvc_access.object_id");
  sFklink("r_msrvc_access", "r_msrvc_tokn_accs",  "r_msrvc_access.access_typ_id = r_msrvc_tokn_accs.token_id");
  sFklink("r_msrvc_access", "r_msrvc_user_group", "r_msrvc_access.user_id = r_msrvc_user_group.group_user_id");
  sFklink("r_msrvc_user_group", "r_msrvc_user_main", "r_msrvc_user_group.user_id = r_msrvc_user_main.user_id");
  sFklink("R_MICROSRVC_MAIN", "r_msrvc_deny_access", "R_MICROSRVC_MAIN.msrvc_id = r_msrvc_deny_access.object_id");
  sFklink("r_msrvc_deny_access", "r_msrvc_tokn_deny_accs", "r_msrvc_deny_access.access_typ_id = r_msrvc_tokn_deny_accs.token_id");
  sFklink("r_msrvc_deny_access", "r_msrvc_da_user_group",     "r_msrvc_deny_access.user_id = r_msrvc_da_user_group.group_user_id");
  sFklink("r_msrvc_da_user_group", "r_msrvc_da_user_main", "r_msrvc_da_user_group.user_id = r_msrvc_da_user_main.user_id");
  sFklink("R_MICROSRVC_MAIN", "r_msrvc_audit", "R_MICROSRVC_MAIN.msrvc_id = r_msrvc_audit.object_id");
  sFklink("r_msrvc_audit", "r_msrvc_tokn_audit", "r_msrvc_audit.action_id = r_msrvc_tokn_audit.token_id");
  sFklink("r_msrvc_audit", "r_msrvc_au_user_group", "r_msrvc_audit.user_id = r_msrvc_au_user_group.group_user_id");
  sFklink("r_msrvc_au_user_group", "r_msrvc_au_user_main", "r_msrvc_au_user_group.user_id = r_msrvc_au_user_main.user_id");

  sFklink("R_TICKET_MAIN", "R_TICKET_ALLOWED_HOSTS", "R_TICKET_MAIN.ticket_id = R_TICKET_ALLOWED_HOSTS.ticket_id");
  sFklink("R_TICKET_MAIN", "R_TICKET_ALLOWED_USERS", "R_TICKET_MAIN.ticket_id = R_TICKET_ALLOWED_USERS.ticket_id");
  sFklink("R_TICKET_MAIN", "R_TICKET_ALLOWED_GROUPS", "R_TICKET_MAIN.ticket_id = R_TICKET_ALLOWED_GROUPS.ticket_id");

  sFklink("R_TICKET_MAIN", "R_DATA_MAIN", "R_TICKET_MAIN.object_id = R_DATA_MAIN.data_id");
  sFklink("R_TICKET_MAIN", "r_ticket_coll_main", "R_TICKET_MAIN.object_id = r_ticket_coll_main.coll_id");
  sFklink("R_TICKET_MAIN", "r_ticket_data_coll_main", "R_TICKET_MAIN.object_id = R_DATA_MAIN.data_id AND R_DATA_MAIN.coll_id = r_ticket_data_coll_main.coll_id");
  sFklink("R_TICKET_MAIN", "r_ticket_user_main", "R_TICKET_MAIN.user_id = r_ticket_user_main.user_id");

  sFklink("R_COLL_MAIN", "r_coll_filesystem_meta", "R_COLL_MAIN.coll_id = r_coll_filesystem_meta.object_id");
  sFklink("R_DATA_MAIN", "r_data_filesystem_meta", "R_DATA_MAIN.data_id = r_data_filesystem_meta.object_id");

/*
  If using the extended ICAT, establish those tables and columns too.
  Currently, links are not done (may be needed later).
*/
#ifdef EXTENDED_ICAT
  for (i=0;i<NumOfExtTables;i++) {
     sTable(extTables[i].tableName, extTables[i].tableAlias, 0);
  }
  for (i=0;i<NumOfExtColumns;i++) {
     sColumn(extColumns[i].column_id, 
	     extColumns[i].column_table_name, 
	     extColumns[i].column_name);
  }

#ifdef EXTENDED_ICAT_TABLE_LINKS
  for (i=0;i<NumOfExtTableLinks;i++) {
     char linkString[200];
     snprintf(linkString, sizeof linkString, "%s.%s = %s.%s",
	      extLinks[i].table1_name, 
	      extLinks[i].col1_name,
	      extLinks[i].table2_name,
	      extLinks[i].col2_name);
     sFklink(extLinks[i].table1_name, extLinks[i].table2_name, linkString);
  }
#endif

#endif


}