Example #1
0
 def reset(self):
     """Forget config info."""
     if Bublin.bubbles_max_slot:
         Bublin.bubbles_max_slot = None
     if Bublin.bubbles_local_slots:
         Bublin.bubbles_local_slots = None
     BaseHandler.reset(self)
Example #2
0
    def add(self, trigger_arg_list):
        """Let trigger put hash into extra3"""

        arg = "ev_extra3='hash='||hashtext(%s)" % skytools.quote_ident(self.key)
        trigger_arg_list.append(arg)

        BaseHandler.add(self, trigger_arg_list)
Example #3
0
 def reset(self):
     """Forget config info."""
     if Bublin.bubbles_max_slot:
         Bublin.bubbles_max_slot = None
     if Bublin.bubbles_local_slots:
         Bublin.bubbles_local_slots = None
     BaseHandler.reset(self)
Example #4
0
    def add(self, trigger_arg_list):
        """Let trigger put hash into extra3"""

        arg = "ev_extra3='hash='||hashtext(%s)" % skytools.quote_ident(self.key)
        trigger_arg_list.append(arg)

        BaseHandler.add(self, trigger_arg_list)
Example #5
0
 def __init__(self, table_name, args, log):
     """Init per-batch table data cache."""
     BaseHandler.__init__(self, table_name, args, log)
     try:
         self.dst_queue_name = args['queue']
     except KeyError:
         raise Exception('specify queue with handler-arg')
     self.rows = []
Example #6
0
 def process_event(self, ev, sql_queue_func, arg):
     """Filter event by hash in extra3, apply only local slots."""
     if ev.extra3:
         meta = skytools.db_urldecode(ev.extra3)
         slot = int(meta['hash']) & self.bubbles_max_slot
         if slot not in self.bubbles_local_slots:
             return
     BaseHandler.process_event(self, ev, sql_queue_func, arg)
Example #7
0
 def __init__(self, table_name, args, log):
     """Init per-batch table data cache."""
     BaseHandler.__init__(self, table_name, args, log)
     try:
         self.dst_queue_name = args['queue']
     except KeyError:
         raise Exception('specify queue with handler-arg')
     self.rows = []
Example #8
0
 def process_event(self, ev, sql_queue_func, arg):
     """Filter event by hash in extra3, apply only local slots."""
     if ev.extra3:
         meta = skytools.db_urldecode(ev.extra3)
         slot = int(meta['hash']) & self.bubbles_max_slot
         if slot not in self.bubbles_local_slots:
             return
     BaseHandler.process_event(self, ev, sql_queue_func, arg)
Example #9
0
    def prepare_copy(self, expr_list, dst_curs):
        """Copy only slots needed locally."""
        self.load_bubbles(dst_curs)

        slist = self.bubbles_local_slots.keys()
        fn = 'hashtext(%s)' % skytools.quote_ident(self.key)
        w = "(((%s) & %d) in (%s))" % (fn, self.bubbles_max_slot, slist)
        expr_list.append(w)

        BaseHandler.prepare_copy(self, expr_list, dst_curs)
Example #10
0
    def prepare_copy(self, expr_list, dst_curs):
        """Copy only slots needed locally."""
        self.load_bubbles(dst_curs)

        slist = self.bubbles_local_slots.keys()
        fn = 'hashtext(%s)' % skytools.quote_ident(self.key)
        w = "(((%s) & %d) in (%s))" % (fn, self.bubbles_max_slot, slist)
        expr_list.append(w)

        BaseHandler.prepare_copy(self, expr_list, dst_curs)
Example #11
0
 def __init__(self, table_name, args, log):
     BaseHandler.__init__(self, table_name, args, log)
     # show args
     self.log.debug("dispatch.init: table_name=%r, args=%r" % \
                    (table_name, args))
     # get table name
     self.table_name = args.get('table', self.table_name)
     self.quoted_name = quote_fqident(self.table_name)
     self.batch_info = None
     self.dst_curs = None
     self.pkeys = None
     # config
     self.conf = self.get_config()
     hdlr_cls = ROW_HANDLERS[self.conf.row_mode]
     self.row_handler = hdlr_cls(self.log)
Example #12
0
    def __init__(self, table_name, args, dest_table):
        """Init per-batch table data cache."""

        BaseHandler.__init__(self, table_name, args, dest_table)

        self.pkey_list = None
        self.dist_fields = None
        self.col_list = None

        self.pkey_ev_map = {}
        self.method = int(args.get("method", DEFAULT_METHOD))
        if not self.method in (0, 1, 2):
            raise Exception("unknown method: %s" % self.method)

        self.log.debug("bulk_init(%r), method=%d", args, self.method)
Example #13
0
    def __init__(self, table_name, args, dest_table):
        """Init per-batch table data cache."""

        BaseHandler.__init__(self, table_name, args, dest_table)

        self.pkey_list = None
        self.dist_fields = None
        self.col_list = None

        self.pkey_ev_map = {}
        self.method = int(args.get('method', DEFAULT_METHOD))
        if not self.method in (0, 1, 2):
            raise Exception('unknown method: %s' % self.method)

        self.log.debug('bulk_init(%r), method=%d', args, self.method)
Example #14
0
 def __init__(self, table_name, args, log):
     BaseHandler.__init__(self, table_name, args, log)
     # show args
     self.log.debug("dispatch.init: table_name=%r, args=%r" % \
                    (table_name, args))
     # get table name
     self.table_name = args.get('table', self.table_name)
     self.quoted_name = quote_fqident(self.table_name)
     self.batch_info = None
     self.dst_curs = None
     self.pkeys = None
     # config
     self.conf = self.get_config()
     hdlr_cls = ROW_HANDLERS[self.conf.row_mode]
     self.row_handler = hdlr_cls(self.log)
Example #15
0
    def __init__(self, table_name, args, log):
        """Init per-batch table data cache."""

        BaseHandler.__init__(self, table_name, args, log)

        self.pkey_list = None
        self.dist_fields = None
        self.col_list = None

        self.pkey_ev_map = {}
        self.method = int(args.get('method', DEFAULT_METHOD))
        if not self.method in (0,1,2):
            raise Exception('unknown method: %s' % self.method)

        self.log.debug('bulk_init(%s), method=%d' % (repr(args), self.method))
Example #16
0
 def __init__(self, table_name, args, log):
     BaseHandler.__init__(self, table_name, args, log)
     # show args
     self.log.debug("dispatch.init: table_name=%r, args=%r" % (table_name, args))
     # get table name
     self.table_name = args.get("table", self.table_name)
     self.quoted_name = quote_fqident(self.table_name)
     self.batch_info = None
     self.dst_curs = None
     self.pkeys = None
     # config
     self.conf = self.get_config()
     hdlr_cls = ROW_HANDLERS[self.conf.row_mode]
     self.row_handler = hdlr_cls(self.log)
     if self.conf.encoding:
         self.encoding_validator = EncodingValidator(self.log, self.conf.encoding)
     else:
         self.encoding_validator = None
Example #17
0
    def real_copy(self, tablename, src_curs, dst_curs, column_list, cond_list):
        """Copy only slots needed locally."""
        self.load_bubbles(dst_curs)

        slist = self.bubbles_local_slots.keys()
        fn = 'hashtext(%s)' % skytools.quote_ident(self.key)
        w = "(((%s) & %d) in (%s))" % (fn, self.bubbles_max_slot, slist)
        cond_list.append(w)

        return BaseHandler.real_copy(self, tablename, src_curs, dst_curs,
                                     column_list, cond_list)
Example #18
0
    def __init__(self, table_name, args, dest_table):

        # compat for dest-table
        dest_table = args.get('table', dest_table)

        BaseHandler.__init__(self, table_name, args, dest_table)

        # show args
        self.log.debug("dispatch.init: table_name=%r, args=%r", table_name, args)
        self.batch_info = None
        self.dst_curs = None
        self.pkeys = None
        # config
        self.conf = self.get_config()
        hdlr_cls = ROW_HANDLERS[self.conf.row_mode]
        self.row_handler = hdlr_cls(self.log)
        if self.conf.encoding:
            self.encoding_validator = EncodingValidator(self.log,
                                                        self.conf.encoding)
        else:
            self.encoding_validator = None
Example #19
0
    def __init__(self, table_name, args, dest_table):

        # compat for dest-table
        dest_table = args.get('table', dest_table)

        BaseHandler.__init__(self, table_name, args, dest_table)

        # show args
        self.log.debug("dispatch.init: table_name=%r, args=%r" % \
                       (table_name, args))
        self.batch_info = None
        self.dst_curs = None
        self.pkeys = None
        # config
        self.conf = self.get_config()
        hdlr_cls = ROW_HANDLERS[self.conf.row_mode]
        self.row_handler = hdlr_cls(self.log)
        if self.conf.encoding:
            self.encoding_validator = EncodingValidator(
                self.log, self.conf.encoding)
        else:
            self.encoding_validator = None
Example #20
0
    def __init__(self, table_name, next, args, log):
        """Init per-batch table data cache."""

        BaseHandler.__init__(self, table_name, next, args, log)

        self.method = DEFAULT_METHOD

        self.pkey_list = None
        self.dist_fields = None
        self.col_list = None

        self.pkey_ev_map = {}

        for a in args:
            k, v = a.split('=')
            if k == 'method':
                m = int(v)
                if m not in (0,1,2):
                    raise Exception('unknown method: %s' % v)
                self.method = int(v)
            else:
                raise Exception('unknown argument: %s' % a)

        self.log.debug('bulk_init(%s), method=%d' % (repr(args), self.method))
Example #21
0
 def reset(self):
     """Called before starting to process a batch.
     Should clean any pending data."""
     BaseHandler.reset(self)
Example #22
0
 def reset(self):
     self.pkey_ev_map = {}
     BaseHandler.reset(self)
Example #23
0
 def reset(self):
     """Called before starting to process a batch.
     Should clean any pending data."""
     BaseHandler.reset(self)
Example #24
0
 def reset(self):
     self.pkey_ev_map = {}
     BaseHandler.reset(self)
Example #25
0
 def prepare_batch(self, batch_info, dst_curs):
     """Called on first event for this table in current batch."""
     if not self.bubbles_max_slot:
         self.load_bubbles(dst_curs)
     BaseHandler.prepare_batch(self, batch_info, dst_curs)
Example #26
0
 def __init__(self, name, next, args):
     BaseHandler.__init__(self, name, next, args)
     self.key = args[0]
Example #27
0
 def prepare_batch(self, batch_info, dst_curs):
     """Called on first event for this table in current batch."""
     if not self.bubbles_max_slot:
         self.load_bubbles(dst_curs)
     BaseHandler.prepare_batch(self, batch_info, dst_curs)
Example #28
0
 def __init__(self, name, next, args):
     BaseHandler.__init__(self, name, next, args)
     self.key = args[0]