Ejemplo n.º 1
0
      it = self.stub.StreamUpdate(req, timeout)
      for response in it:
        stream_event = response.stream_event
        fields = []
        rows = []
        if stream_event.primary_key_fields:
          conversions = []
          for field in stream_event.primary_key_fields:
            fields.append(field.name)
            conversions.append(field_types_proto3.conversions.get(field.type))

          for r in stream_event.primary_key_values:
            row = tuple(_make_row(r, conversions))
            rows.append(row)

        yield update_stream.StreamEvent(
            category=int(stream_event.category),
            table_name=stream_event.table_name,
            fields=fields,
            rows=rows,
            sql=stream_event.sql,
            timestamp=stream_event.timestamp,
            transaction_id=stream_event.transaction_id)
    except face.AbortionError as e:
      # FIXME(alainjobart) These exceptions don't print well, so raise
      # one that will.  The real fix is to define a set of exceptions
      # for this library and raise that, but it's more work.
      raise dbexceptions.OperationalError(e.details, e)

update_stream.register_conn_class('grpc', GRPCUpdateStreamConnection)
Ejemplo n.º 2
0
        fields = []
        rows = []
        if reply['PrimaryKeyFields']:
          conversions = []
          for field in reply['PrimaryKeyFields']:
            fields.append(field['Name'])
            conversions.append(field_types_proto3.conversions.get(
                field['Type']))

          for pk_list in reply['PrimaryKeyValues']:
            if not pk_list:
              continue
            decoded_row = tuple(_make_row(pk_list, conversions))
            rows.append(decoded_row)

        yield update_stream.StreamEvent(category=reply['Category'],
                                        table_name=reply['TableName'],
                                        fields=fields,
                                        rows=rows,
                                        sql=reply['Sql'],
                                        timestamp=reply['Timestamp'],
                                        transaction_id=reply['TransactionId'])
    except gorpc.AppError as e:
      raise dbexceptions.DatabaseError(*e.args)
    except gorpc.GoRpcError as e:
      raise dbexceptions.OperationalError(*e.args)
    except:
      raise

update_stream.register_conn_class('gorpc', GoRpcUpdateStreamConnection)
Ejemplo n.º 3
0
                stream_event = response.stream_event
                fields = []
                rows = []
                if stream_event.primary_key_fields:
                    conversions = []
                    for field in stream_event.primary_key_fields:
                        fields.append(field.name)
                        conversions.append(
                            field_types_proto3.conversions.get(field.type))

                    for r in stream_event.primary_key_values:
                        row = tuple(_make_row(r, conversions))
                        rows.append(row)

                yield update_stream.StreamEvent(
                    category=int(stream_event.category),
                    table_name=stream_event.table_name,
                    fields=fields,
                    rows=rows,
                    sql=stream_event.sql,
                    timestamp=stream_event.timestamp,
                    transaction_id=stream_event.transaction_id)
        except face.AbortionError as e:
            # FIXME(alainjobart) These exceptions don't print well, so raise
            # one that will.  The real fix is to define a set of exceptions
            # for this library and raise that, but it's more work.
            raise dbexceptions.OperationalError(e.details, e)


update_stream.register_conn_class('grpc', GRPCUpdateStreamConnection)