1

I wrote a contract, suppose C defining the multi-index table T. Table struct has two parameter suppose x and y. x was the primary key. I made some entries in T and when i tried to access it back, I came to know that table is not added in abi so i cannot access the table data using eos.getTableRows().Call it deployment A.

I redeployed the contract keeping the contract name C, from same account C and making y the primary key and everything else just same(Table T). Again i made some entries.Call it deployment B.

Now when I access the table, I get all the entries of deployment A & B.

  • Is it normal? If yes, on which parameter(x or y), lower & upper_bound will work? As they work on primary key and here we are getting a merged table with different primary key in each deployment.
  • How can I get the separate data of both the deployments? I mean what parameters contributed in their merging contract name, account name or table name?
1
  • If anything needs further explanation, please let me know.
    – A.K.
    Commented Sep 27, 2018 at 6:23

1 Answer 1

2

As per this description i can say that at the time of deployment called A you have not added that table abi that's why you are not able to call getTableRows() but actually the table actions have executed and made entries on table and occupied RAM also.Now, what happens when you redeployed the same contract with same account and made some changes but that RAM is still occupied with your old table entries and when you enter new entries that also added on table and shows you both data.You are facing this because that old data was not erased from RAM.

6
  • I agree with your explanation. Can you please visit the two queries in the question and can add information regarding them?
    – A.K.
    Commented Sep 28, 2018 at 6:12
  • as i need more explanation on first one but i can say that for second query that it can be done now only by erasing old entries and made new entries on behalf of them.the parameters contributed in merging is account name.
    – Mr.Y
    Commented Sep 28, 2018 at 6:20
  • So if with this account, i deploy any other contract with any xyz name but same table name, they will get merged?
    – A.K.
    Commented Sep 28, 2018 at 6:28
  • Yes exactly it will merged because you can have only one contract per account
    – Mr.Y
    Commented Sep 28, 2018 at 6:30
  • ok, i got it. I update the first question, is it clear to you now?
    – A.K.
    Commented Sep 28, 2018 at 6:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.