Forum: Ruby KirbyBase 2.5: Problem pdating records

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Acdabad15b58ba105df230e3ea02523d?d=identicon&s=25 basi (Guest)
on 2005-12-13 10:09
(Received via mailing list)
Hello,
I'm trying to do record upates as follows:

tgl_analysis.select.each do |t|
  if t.exception != 'y' then
    tgl_analysis.update {|r| r.recno == t.recno}.set do |r|
      r.word =         (some value)
      r.prefix =        (some value)
    end
  end
end

This code removes the selected records, replacing them with blank
lines.

What did I miss?

Thanks!
basi
E5c79d5a6d378dc4a26e20435be31657?d=identicon&s=25 Jamey Cribbs (Guest)
on 2005-12-13 15:19
(Received via mailing list)
basi wrote:

>end
>
>This code removes the selected records, replacing them with blank
>lines.
>
>What did I miss?
>
>
When KirbyBase updates a record it tries to write the updated record
back to the same spot in the physical file where it was before the
update.  However, if the updated record is now longer than the original
record, KirbyBase blanks out the line in the file where the original
record was and appends the updated record at the bottom of the physical
file.

It does this because it is much faster to do this than to have to
rewrite every record below the spot where the updated record is going to
go.  It is much faster and easier to just blank out the line where the
record was, and then write the updated record at the end of the file
where there is enough room to accomodate the increased record length.
This is all transparent to the user.  KirbyBase handles updating all of
the indexes and such.  The only time you would notice it is if you
opened up the table's physical file in a text editor.

So, that is what I think is happening here.  If you are saying that the
lines are blank, I am assuming you are opening up the physical file and
looking at it.  The updated records should now be at the bottom of the
file.  If you do another #select on those records, they should be
updated.

Once you start getting a lot of blank lines, you can run #pack to get
rid of them.

Let me know if this answers your question.

Jamey Cribbs

Confidentiality Notice: This email message, including any attachments,
is for the sole use of the intended recipient(s) and may contain
confidential and/or privileged information. If you are not the intended
recipient(s), you are hereby notified that any dissemination,
unauthorized review, use, disclosure or distribution of this email and
any materials contained in any attachments is prohibited. If you receive
this message in error, or are not the intended recipient(s), please
immediately notify the sender by email and destroy all copies of the
original message, including attachments.
Acdabad15b58ba105df230e3ea02523d?d=identicon&s=25 basi (Guest)
on 2005-12-13 18:24
(Received via mailing list)
It is, as you explained, exactly what is happening here. Yes, the
updated records are appended back at the end of the table. (The table
is large and I didn't scroll far down enough to have seen the records;
my apologies.)

All's well and good. And thanks again for KirbyBase and the great
support.

Anything that KirbyBasers would be interested to know that is coming
down the pipes?

Thanks!
basi
E5c79d5a6d378dc4a26e20435be31657?d=identicon&s=25 Jamey Cribbs (Guest)
on 2005-12-13 18:54
(Received via mailing list)
basi wrote:

>
>
Well, probably the biggest news is that Assaph Mehr, the author of
Pimki, is working on an ActiveRecord adapter for KirbyBase, called
Ackbar.  I think he has the CRUD functionality working and is now
implementing the associations (i.e. has_many, belongs_to).

Other than that, I have a few bug-fixes that I have made, but no new
features.  If anyone has anything they would like to see, please email
me or go to KirbyBase's RubyForge page and add your request.

I am in the process of, very slowly, bringing the Python version of
KirbyBase up to date with the Ruby version.  So, if any of you program
in both languages, this might interest you.

Jamey Cribbs

Confidentiality Notice: This email message, including any attachments,
is for the sole use of the intended recipient(s) and may contain
confidential and/or privileged information. If you are not the intended
recipient(s), you are hereby notified that any dissemination,
unauthorized review, use, disclosure or distribution of this email and
any materials contained in any attachments is prohibited. If you receive
this message in error, or are not the intended recipient(s), please
immediately notify the sender by email and destroy all copies of the
original message, including attachments.
This topic is locked and can not be replied to.