# Duplicate 'SHOW FIELDS' statements when inserting data for p

**URL:** <https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440>\
**Category:** Rails\
**Created:** [June 10, 2007, 4:09pm UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440 "2007-06-10T16:09:27Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dmcclean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dmcclean](https://www.ruby-forum.com/u/dmcclean)\
**Post date:** [June 10, 2007, 4:09pm UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440/1 "2007-06-10T16:09:27Z")

</div>

I am using a HABTM relationship for my app. When inserting data for a  
number of collection objects,  
I am seeing a ‘SHOW FIELD’ query as each row is inserted:

0m  
[4;36;1melements\_tags Columns (0.020000) [0m [0;1mSHOW FIELDS  
FROM elements\_tags [0m  
[4;35;1mSQL (0.010000) [0m [0mINSERT INTO elements\_tags  
(`element_id`, `tag_id`, `add_flag`) VALUES (3140, 2, NULL) [0m  
[4;36;1melements\_items Columns (0.010000) [0m [0;1mSHOW FIELDS  
FROM elements\_items [0m  
[4;35;1mSQL (0.010000) [0m [0mINSERT INTO elements\_items  
(`item_id`, `element_id`, `add_flag`) VALUES (94, 3140, 0) [0m  
[4;36;1mitems\_releases Columns (0.020000) [0m [0;1mSHOW FIELDS  
FROM items\_releases [0m  
[4;35;1mSQL (0.020000) [0m [0mINSERT INTO items\_releases  
(`item_id`, `release_id`) VALUES (94, 97) [0m  
[4;36;1mitems\_releases Columns (0.010000) [0m [0;1mSHOW FIELDS  
FROM items\_releases [0m  
[4;35;1mSQL (0.020000) [0m [0mINSERT INTO items\_releases  
(`item_id`, `release_id`) VALUES (91, 97) [0m  
[4;36;1mitems\_releases Columns (0.020000) [0m [0;1mSHOW FIELDS  
FROM items\_releases [0m  
[4;35;1mSQL (0.010000) [0m [0mINSERT INTO items\_releases  
(`item_id`, `release_id`) VALUES (92, 97) [0m  
[4;

What would cause this? From what I understand, the column meta data  
should be loaded only once as  
each model is loaded for the first time. This happens under both  
Oracle and MySQL. I am  
running with my environment set to production.

Thanks in advance,  
Don Mc

---

<div class="post-metadata">

**Author:** ![dmcclean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dmcclean](https://www.ruby-forum.com/u/dmcclean)\
**Post date:** [June 11, 2007, 10:57pm UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440/2 "2007-06-11T22:57:49Z")

</div>

Any ideas,anyone?

---

<div class="post-metadata">

**Author:** ![dmcclean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dmcclean](https://www.ruby-forum.com/u/dmcclean)\
**Post date:** [June 12, 2007, 6:12am UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440/3 "2007-06-12T06:12:29Z")

</div>

Don.Mc wrote:

> [4;35;1mSQL (0.020000) [0m [0mINSERT INTO items\_releases  
> Oracle and MySQL. I am  
> running with my environment set to production.

Rails currently doesn’t cache columns of HABTM join tables.  
The fix would probably only involve changing line

[http://dev.rubyonrails.org/browser/trunk/activerecord/lib/active\_record/associations/has\_and\_belongs\_to\_many\_association.rb#L84](http://dev.rubyonrails.org/browser/trunk/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb#L84)

to read @columns ||= …

Give it a try, or open a ticket.

–  
We develop, watch us RoR, in numbers too big to ignore.

---

<div class="post-metadata">

**Author:** ![dmcclean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dmcclean](https://www.ruby-forum.com/u/dmcclean)\
**Post date:** [June 12, 2007, 3:58pm UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440/4 "2007-06-12T15:58:33Z")

</div>

Thanks! I will give it a try.

Regards,  
Don

---

<div class="post-metadata">

**Author:** ![dmcclean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dmcclean](https://www.ruby-forum.com/u/dmcclean)\
**Post date:** [June 12, 2007, 4:22pm UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440/5 "2007-06-12T16:22:37Z")

</div>

Don.Mc wrote:

> Thanks! I will give it a try.

Thinking about it, the change I suggested will only get  
rid of the last two SHOW FIELDS in your post; the join table  
fields will still be fetched separately for each parent object.

A proper fix would have to cache the columns inside the  
association reflection.

–  
We develop, watch us RoR, in numbers too big to ignore.

---

<div class="post-metadata">

**Author:** ![dmcclean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dmcclean](https://www.ruby-forum.com/u/dmcclean)\
**Post date:** [June 12, 2007, 4:25pm UTC](https://www.ruby-forum.com/t/duplicate-show-fields-statements-when-inserting-data-for-p/106440/6 "2007-06-12T16:25:38Z")

</div>

OK, will look at that. Thanks again.
