8000 Count() incorrect for tx rollback. · Issue #108 · kelindar/column · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Count() incorrect for tx rollback.  #108
Open
@pyrofolium

Description

@pyrofolium
package main_test

import (
	"errors"
	"fmt"
	"log"
	"strconv"
	"testing"

	"github.com/kelindar/column"
	"github.com/zeebo/assert"
)

func TestTransaction(t *testing.T) {
	players := column.NewCollection()
	err := errors.Join(players.CreateColumn("name", column.ForString()),
		players.CreateColumn("class", column.ForString()),
		players.CreateColumn("balance", column.ForFloat64()),
		players.CreateColumn("age", column.ForInt16()))
	if err != nil {
		log.Fatalf("failed to create columns")
	}
	addPlayers := func() {
		err = players.Query(func(tx *column.Txn) error {
			for i := 0; i < 20; i++ {
				_, err := tx.Insert(func(r column.Row) error {
					r.SetString("name", "merlin")
					r.SetString("class", "mage")
					r.SetFloat64("balance", 99.95)
					r.SetInt16("age", 107)
					return nil
				})
				if err != nil {
					return err
				}
			}
			return nil
		})
	}

	addPlayers()
	assert.Nil(t, err)
	assert.Equal(t, players.Count(), 20)

	addPlayersError := func() error {
		err = players.Query(func(tx *column.Txn) error {
			for i := 0; i < 20; i++ {
				_, err = tx.Insert(func(r column.Row) error {
					r.SetString("name", "merlin")
					r.SetString("class", "mage")
					r.SetFloat64("balance", 99.95)
					r.SetInt16("age", 107)
					return nil
				})
				if err != nil {
					return err
				}
			}
			return errors.New("SHOULD NOT PASS")
		})
		return err
	}

	err = addPlayersError()
	assert.Error(t, err)                 //should be error.
	assert.Equal(t, players.Count(), 20) //transaction failed should still be 20.
}

Seems like counts are not accounting for rollbacks. The last transaction should fail, and the count should remain 20 but it doesn't?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0