Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

ajt (2546)

ajt
  (email not shown publicly)
http://www.iredale.net/

UK based. Perl, XML/HTTP, SAP, Debian hacker.

  • CPAN: ATRICKETT [cpan.org]
  • PerlMonks: ajt [perlmonks.org]
  • Local LUG: AdamTrickett [lug.org.uk]
  • Debian Administration: ajt [debian-adm...ration.org]
  • LinkedIn: drajt [linkedin.com]

Journal of ajt (2546)

Thursday May 26, 2005
05:28 AM

Maypole Segfaults

[ #24886 ]

I'm again trying to use Maypole. After battling with it for some time, I decided to give up and start from a clean slate. I created the first table, and that was okay, then I added a second, and linked them, and that was okay. Any additional tables cause a segfault in the Apache/mod_perl process when I try to view them. I'm sure it's something stupid, but I can't see it, and it is driving me mad!

Here is how the SQLite tables are created:

create table asset (
        id integer primary key,
        name varchar(50),
        department integer,
        language integer,
        qpnumber integer,
        conumber integer,
        country integer,
        user integer,
        projectid varchar(30),
        category varchar(30),
        datecreated varchar(30),
        dateapproved varchar(30),
        description text
);

INSERT INTO asset
        (id, projectid, name,  department, language, qpnumber, conumber, category, description, user, datecreated, dateapproved, country) VALUES
        (1,  1,         "Foo", 1,          2,        1,        1,       "drawing", "Foo",       1,    "today",     "tomorrow",   1);

INSERT INTO asset
        (id, projectid, name,  department, language, qpnumber, conumber, category, description, user, datecreated, dateapproved, country) VALUES
        (2,  2,         "Bar", 1,          1,        2,        2,       "drawing", "Bar",       1,    "today",     "tomorrow",   1);

#
#       The Department table
#

create table department (
    id integer primary key,
    name varchar(30),
    notes text
);

INSERT INTO department
        (id, name, notes) VALUES
        (1,  "Marketing", "The spenders of money");
INSERT INTO department
        (id, name, notes) VALUES
        (2,  "SAP/IT", "The unsung heroes");

#
#       The Language table
#

create table language (
        id primary key,
        name varchar(30),
        iso varchar(8),
        notes text
);

INSERT INTO language
        (id, name,      iso,  notes) VALUES
        (1,  "English", "en", "English Language");
INSERT INTO language
        (id, name,                iso,  notes) VALUES
        (2,  'English (British)', "en-GB", "British English");
INSERT INTO language
        (id, name,                 iso,  notes) VALUES
        (3,  'English (American)', "en-US", "American English");
INSERT INTO language
        (id, name,     iso,  notes) VALUES
        (4,  'French', "fr", "French");
#
#       The conumber table
#

create table conumber (
        id primary key,
        name varchar(30),
        datecreated varchar(10),
        user integer,
        department integer,
        notes text
);

INSERT INTO conumber
        (id, name,    datecreated, user, department, notes) VALUES
        (1,  "CO567", "today",    1,    2,          "Womble");
INSERT INTO conumber
        (id, name,    datecreated, user, department, notes) VALUES
        (2,  "CO767", "today",    2,    1,          "Burp");
INSERT INTO conumber
        (id, name,    datecreated, user, department, notes) VALUES
        (3,  "CO5h7", "tomorrow", 1,    1,          "humble");

#
#       The country table
#

create table country (
        id primary key,
        name varchar(30),
        operation varchar(30),
        notes text
);

INSERT INTO country
        (id, name,             operation, notes) VALUES
        (1,  "United Kingdom", "UK",      "UK Sales company");
INSERT INTO country
        (id, name,             operation, notes) VALUES
        (2,  "United Kingdom", "IHQ",      "International Headquarters");
INSERT INTO country
        (id, name,     operation, notes) VALUES
        (3,  "France", "FR",      "French Sales company");

That creates a tiny sqlite db, that we then access via Maypole. Here is the Maypole code.

package Ibudb;

#
#       Load modules
#

use strict;
use Maypole::Application;
use Class::DBI::Loader::Relationship;

#
#       Base configuration
#

Ibudb->setup("dbi:SQLite:/home/web/vhost/alarisibu/ibu/ibu.d b");
Ibudb->config->uri_base("http://dev.alarisibu.int.alarismed.com/ibudb/");
Ibudb->config->template_root("/home/web/vhost/alarisibu/ibu/factory");
Ibudb-> config->rows_per_page(10);

#
#       Define the tables to Display
#

Ibudb->config->display_tables([qw[asset department language conumber country]]);

#       asset table
Ibudb::Asset->untaint_columns(
        printable => [qw/name category dateapproved datecreated qpnumber projectid description/],
        integer   => [qw/user/] );

#       department table
Ibudb::Department->untaint_columns( printable => [qw/name notes/] );

#       language table
Ibudb::Language->untaint_columns( printable => [qw/name iso notes/] );

#       conumber table
Ibudb::Conumber->untaint_columns( printable => [qw/name datecreated notes/] );

#       country table
Ibudb::Country->untaint_columns( printable => [qw/name operation notes/] );

#
#       Define the table-table relationships
#

Ibudb->config->{loader}->relationship($_) for (
        "a department defines assets",
        "a department defines conumbers",
        "a language defines assets",
        "a conumber defines assets",
        "a country defines assets",
        "a country defines conumbers",
);

1;

I can view the asset table okay, and the department page, any other table causes a segfault...

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.