Re: [CDBI] Calling columns( Essential ) twice

[prev] [thread] [next] [Date index for 2005/09/28]

From: Christopher H. Laco
Subject: Re: [CDBI] Calling columns( Essential ) twice
Date: 17:34 on 28 Sep 2005
This is a cryptographically signed message in MIME format.

--===============2045042167==
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";
	micalg=sha1; boundary="------------ms020503030204030802020609"

This is a cryptographically signed message in MIME format.

--------------ms020503030204030802020609
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Bill Moseley wrote:
> Minor time killer.
> 
> I happened to be calling Essential twice on a class.  When I did this
> LAZY POPULATION was not working on columns that were no longer in
> Essential.  So, don't call Essential twice, I suppose.
> 
> 
>     DB::Person->columns( Essential => qw/ id first_name last_name content / );
>     DB::Person->columns( Essential => qw/ id first_name last_name  / );
> 
>     my $item = DB::Person->retrieve( 1 );
> 
>     print $item->content ? "content found\n" : "sorry, out of luck\n";
> 
> Results in:
> 
>     $ perl one_table.pl 
>     sorry, out of luck
> 
> when there is indeed content.  CDBI isn't going back to the DB.
> 
> Comment out either one (or both) of the Essential calls and it works fine.
> 
> Here's a demo on CDBI 3.0.8:
> 
> 
> package DB;
> use base 'Class::DBI::Sweet';
> DB->connection('dbi:mysql:test', '', '');
> #DB->connection('dbi:Pg:dbname=test2', '', '');
> 
> 
> package DB::Person;
> use base 'DB';
> __PACKAGE__->table('person');
> __PACKAGE__->columns(All => qw/id first_name last_name role content/);
> 
> package main;
> use strict;
> use warnings;
> use Template;
> 
> DB->db_Main->do("DROP TABLE $_") for qw/ person /;
> 
> 
> DB->db_Main->do(<<"");
>     CREATE TABLE person (
>         id          integer PRIMARY KEY,
>         role        integer,
>         first_name  text,
>         last_name   text,
>         content text
>     );
> 
> 
> DB::Person->create( {
>     id          => 1,
>     role        => 3,
>     first_name  => 'Joe',
>     last_name   => 'Blow',
>     content     => 'This is some content about Joe',
> });
> 
> 
> DB::Person->columns( Essential => qw/ id first_name last_name content / );
> DB::Person->columns( Essential => qw/ id first_name last_name  / );
> 
> my $item = DB::Person->retrieve( 1 );
> 
> print $item->content ? "content found\n" : "sorry, out of luck\n";
> 

I don't think Tony surfs this list much, if at all, so make sure to file 
an RT on the issue. I know he checks those.

This would probably be even more of an issue if a subclass of your class 
wants to call __PACKAGE__->columns to override the base classes 
decisions about what is and isn't essential.

-=Chris

--------------ms020503030204030802020609
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIII8TCC
AtMwggI8oAMCAQICAw37vjANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UE
ChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNv
bmFsIEZyZWVtYWlsIElzc3VpbmcgQ0EwHhcNMDUwMjA3MTc0NDM3WhcNMDYwMjA3MTc0NDM3
WjBFMR8wHQYDVQQDExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMSIwIAYJKoZIhvcNAQkBFhNj
bGFjb0BjaHJpc2xhY28uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwOzj
4xFQtv4Fjr44h4AmlOTqOYw4PM80JgQrIhCQpJlQQgr+gltu+HqCdkU+8nO+MjTOSgDH98Vx
t0GK7Y7uZkwPkYM+av/RQf37y7QMPlrQiBJcKb1TYa1yWijjdvwOpEB1RSnEBtKKXN/Yc6WF
kV/mRGpCKoaxCC6YeBr4uWXXduz6KOR4RLBE3+EmxzUeGwPulHmS/evmPkt2Z7O/AVx2y1zW
zng76M1mftCw9dI7nob1F9xhIjdHEbjivysFNFmqqH0HDwkcM/VgXoU5pQNNzkglwN22MlDH
6ZylE6fCLHzzIh+1t5wdFmN+YtvemhuxO6puVuSsngJaQXBHvwIDAQABozAwLjAeBgNVHREE
FzAVgRNjbGFjb0BjaHJpc2xhY28uY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEEBQAD
gYEAaxPn+huyClyf0rU/gPmK9pqb9TSWPjxSpXhXDA9rweZiDM7kapY+s+gYQWsN2aS0Aeaz
ugPigDLVcFejf4ZxZKIKfuj05rIFC0HYg9mE6rQE8PPJP1y8Ln8Nttr6uLBKBxgPTz26sOQP
k+kfFo1su7WSJk5DHHcnIplfPHew+NYwggLTMIICPKADAgECAgMN+74wDQYJKoZIhvcNAQEE
BQAwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0
ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA1
MDIwNzE3NDQzN1oXDTA2MDIwNzE3NDQzN1owRTEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWls
IE1lbWJlcjEiMCAGCSqGSIb3DQEJARYTY2xhY29AY2hyaXNsYWNvLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMDs4+MRULb+BY6+OIeAJpTk6jmMODzPNCYEKyIQkKSZ
UEIK/oJbbvh6gnZFPvJzvjI0zkoAx/fFcbdBiu2O7mZMD5GDPmr/0UH9+8u0DD5a0IgSXCm9
U2Gtcloo43b8DqRAdUUpxAbSilzf2HOlhZFf5kRqQiqGsQgumHga+Lll13bs+ijkeESwRN/h
Jsc1HhsD7pR5kv3r5j5LdmezvwFcdstc1s54O+jNZn7QsPXSO56G9RfcYSI3RxG44r8rBTRZ
qqh9Bw8JHDP1YF6FOaUDTc5IJcDdtjJQx+mcpROnwix88yIftbecHRZjfmLb3pobsTuqblbk
rJ4CWkFwR78CAwEAAaMwMC4wHgYDVR0RBBcwFYETY2xhY29AY2hyaXNsYWNvLmNvbTAMBgNV
HRMBAf8EAjAAMA0GCSqGSIb3DQEBBAUAA4GBAGsT5/obsgpcn9K1P4D5ivaam/U0lj48UqV4
VwwPa8HmYgzO5GqWPrPoGEFrDdmktAHms7oD4oAy1XBXo3+GcWSiCn7o9OayBQtB2IPZhOq0
BPDzyT9cvC5/Dbba+riwSgcYD089urDkD5PpHxaNbLu1kiZOQxx3JyKZXzx3sPjWMIIDPzCC
AqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdl
c3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UE
AxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25h
bC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVow
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ox7svc31W/Iadr1/
DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2JCoTzyvV84J3PQO+
K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wIDAQABo4GUMIGRMBIG
A1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC50aGF3dGUu
Y29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEGMCkGA1UdEQQi
MCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0BAQUFAAOBgQBI
jNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD2ToZ
foSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1TXfj
ViF4gtwhGTXeJLHTHUb/XV9lTzGCAzswggM3AgEBMGkwYjELMAkGA1UEBhMCWkExJTAjBgNV
BAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJz
b25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAgMN+74wCQYFKw4DAhoFAKCCAacwGAYJKoZIhvcN
AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDUwOTI4MTczNDEwWjAjBgkqhkiG
9w0BCQQxFgQU2FTFa7udQmb9CPRpfbCEiyeRx04wUgYJKoZIhvcNAQkPMUUwQzAKBggqhkiG
9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN
AwICASgweAYJKwYBBAGCNxAEMWswaTBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3Rl
IENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIElzc3VpbmcgQ0ECAw37vjB6BgsqhkiG9w0BCRACCzFroGkwYjELMAkGA1UEBhMCWkEx
JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0
ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAgMN+74wDQYJKoZIhvcNAQEBBQAEggEA
dgziJnWMpd9j9sct+RyE/G9/TY0OCs6DNtM/KBNrcAj+ptm7CcxDzC+6gLn0d+affvKq856U
36Fb7JWbG8QCs/XDTnOqjwGbsDIgt5DsEYNudN7MkNRTgR2bqRjZ9Zc3fe2lbQ2Xd2MJpy68
EKtofo2AngQziJz7gxyoOOWPJ2W4y7Wil4l6QzuuGL6FWx3YkKlSjVfDd1U135bosVN3HxOa
P2bU9gxL0GSmUrxds/srUbDCrHvrvokF5kIjLTsWev3kzdBLN9gz0nNmIxTwymJnyx3jRlEj
FZzW/1xpX7Q32izTiBZo5VFRAdQYk99eYWbpj83ZwEKLlW9CNYKhWgAAAAAAAA==
--------------ms020503030204030802020609--


--===============2045042167==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
ClassDBI mailing list
ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx
http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi

--===============2045042167==--

[CDBI] Calling columns( Essential ) twice
Bill Moseley 17:06 on 28 Sep 2005

Re: [CDBI] Calling columns( Essential ) twice
Christopher H. Laco 17:34 on 28 Sep 2005

Generated at 15:06 on 02 Oct 2005 by mariachi v0.52