Beispiel #1
0
        public void CreateTriggers(SqlConnection conn)
        {
            string cur_db_name = null;

            try
            {
                cur_db_name = BingoSqlUtils.ExecStringQuery(conn, "SELECT DB_NAME()");
                BingoSqlUtils.ExecNonQueryNoThrow(conn, "USE {0}", id.DatabaseName(conn));

                string bingo_db_schema = cur_db_name + "." + bingo_schema;

                string   full_name      = id.FullTableName(conn);
                object[] trigger_params = new object[] { null,
                                                         full_name, id_column, data_column, bingo_db_schema, id.table_id, id.database_id };

                trigger_params[0] = GetTriggerName("Insert", conn, cur_db_name);
                string insert_trigger = String.Format(resource.OnInsertTrigger, trigger_params);
                BingoSqlUtils.ExecNonQuery(conn, "{0}", insert_trigger);

                trigger_params[0] = GetTriggerName("Delete", conn, cur_db_name);
                string delete_trigger = String.Format(resource.OnDeleteTrigger, trigger_params);
                BingoSqlUtils.ExecNonQuery(conn, "{0}", delete_trigger);

                trigger_params[0] = GetTriggerName("Update", conn, cur_db_name);
                string update_trigger = String.Format(resource.OnUpdateTrigger, trigger_params);
                BingoSqlUtils.ExecNonQuery(conn, "{0}", update_trigger);
            }
            finally
            {
                if (cur_db_name != null)
                {
                    BingoSqlUtils.ExecNonQueryNoThrow(conn, "USE {0}", cur_db_name);
                }
            }
        }
Beispiel #2
0
        private static BingoIndexData GetIndexDataById(SqlConnection conn, string bingo_schema,
                                                       BingoIndexID id, int spid)
        {
            lock (index_data_list_lock)
            {
                foreach (BingoIndexDataRefs index_data_refs in index_data_list)
                {
                    if (index_data_refs.index_data.id.Equals(id))
                    {
                        if (!index_data_refs.session_ids.Contains(spid))
                        {
                            BingoLog.logMessage("Existing BingoIndexData added for spid={0} table={1}",
                                                spid, id.FullTableName(conn));
                            index_data_refs.session_ids.Add(spid);
                        }
                        return(index_data_refs.index_data);
                    }
                }

                BingoLog.logMessage("Extracting new BingoIndexData for spid={0} table={1}",
                                    spid, id.FullTableName(conn));

                BingoIndexData data = _extractIndexData(conn, bingo_schema, id, true);
                _AddIndexDataToList(spid, data);

                return(data);
            }
        }
      public static BingoIndexData CreateIndexData (int spid, SqlConnection conn, string bingo_schema,
                      string table, string id_column, string data_column, bool reaction)
      {
         lock (index_data_list_lock)
         {
            BingoIndexID id = new BingoIndexID(conn, table);
            _DropIndexData(conn, bingo_schema, id, false);

            BingoIndexData data;

            if (reaction)
               data = new RingoIndexData(id, id_column, data_column, bingo_schema);
            else
               data = new MangoIndexData(id, id_column, data_column, bingo_schema);

            BingoSqlUtils.ExecNonQuery(conn,
               "INSERT INTO {0} VALUES({1}, {2}, '{3}', '{4}', '{5}', '{6}')",
               _contextTable(bingo_schema), id.table_id, id.database_id, id.FullTableName(conn),
               id_column, data_column,
               reaction ? "reaction" : "molecule");

            data.CreateTables(conn);
            _AddIndexDataToList(spid, data);

            BingoLog.logMessage("Bingo index for table {0} has been initialized", id.FullTableName(conn));

            return data;
         }
      }
Beispiel #4
0
        public static BingoIndexData CreateIndexData(int spid, SqlConnection conn, string bingo_schema,
                                                     string table, string id_column, string data_column, bool reaction)
        {
            lock (index_data_list_lock)
            {
                BingoIndexID id = new BingoIndexID(conn, table);
                _DropIndexData(conn, bingo_schema, id, false);

                BingoIndexData data;

                if (reaction)
                {
                    data = new RingoIndexData(id, id_column, data_column, bingo_schema);
                }
                else
                {
                    data = new MangoIndexData(id, id_column, data_column, bingo_schema);
                }

                BingoSqlUtils.ExecNonQuery(conn,
                                           "INSERT INTO {0} VALUES({1}, {2}, '{3}', '{4}', '{5}', '{6}')",
                                           _contextTable(bingo_schema), id.table_id, id.database_id, id.FullTableName(conn),
                                           id_column, data_column,
                                           reaction ? "reaction" : "molecule");

                data.CreateTables(conn);
                _AddIndexDataToList(spid, data);

                BingoLog.logMessage("Bingo index for table {0} has been initialized", id.FullTableName(conn));

                return(data);
            }
        }
      private static BingoIndexData GetIndexDataById (SqlConnection conn, string bingo_schema, 
         BingoIndexID id, int spid)
      {
         lock (index_data_list_lock)
         {
            foreach (BingoIndexDataRefs index_data_refs in index_data_list)
            {
               if (index_data_refs.index_data.id.Equals(id))
               {
                  if (!index_data_refs.session_ids.Contains(spid))
                  {
                     BingoLog.logMessage("Existing BingoIndexData added for spid={0} table={1}",
                        spid, id.FullTableName(conn));
                     index_data_refs.session_ids.Add(spid);
                  }
                  return index_data_refs.index_data;
               }
            }

            BingoLog.logMessage("Extracting new BingoIndexData for spid={0} table={1}",
               spid, id.FullTableName(conn));

            BingoIndexData data = _extractIndexData(conn, bingo_schema, id, true);
            _AddIndexDataToList(spid, data);

            return data;
         }
      }