Telephone +44(0)1524 64544
Email: info@shadowcat.co.uk

opw-2010 - troll-god-mountain

Sat Dec 22 00:30:00 2012

Slides for the talk troll-god-mountain at opw-2010

The Troll,
The God And
The Mountain

-

Puerile
Unfunny

-

Not Damian
Conway

-

That's ok

-

I wanted to
be MJD when
I grow up

-

Talk-fu

-

Talk-fu(ck)

-

Tell A
Story

-

The Troll,
The God And
The Mountain

-

The Troll

-

Thog

-

Thog
>
EvanCarroll

-

Quest

-

1 Thog
2 Zoffix
3 RJBS

-

Origins

-

::ButMaintained

-

Al

-

-

postmaster

-

SELECT *
FROM posts

-

1+N
problem

-

SELECT *
FROM comments
WHERE post = ?

-

oomkiller

-

connection
lost

-

mysql server
gone away

-

500

-

-

Oracle

-

dialect

-

''
(empty
string)

-

NULL

-

license
fees

-

European
Commission

-

Monty

-

-

The God

-

v10

-

Create

-

Create
Retrieve

-

Create
Retrieve
Update

-

Create
Retrieve
Update
Delete

-

I

-

Dimensional
Being

-

DBI

-

DBD::

-

DBI->connect

-

resultset

-

-

v10

-

given
when

-

(not an
expression)

-

not deployed
everywhere yet

-

FUCKING
Dead Rat

-

v8

-

perl5 v8.0
July 18 2002

-

Moose

-

method foo {

-

-

Object
Relational
Mapper

-

Class::DBI

-

Michael
G. Schwern

-

Tony
Bowden

-

DBIx::Class

-

Some goth
english
bastard

-

DB2 on the
AS/400

-

ORM
construction
toolkit

-

::Core =
Row+PK
+InflateColumn
+Relationship
+...

-

Multiple
Inheritance

-

Damian's
NEXT.pm

-

Stevan's
Class::C3

-

flattens
diamond
inheritance

-

(stolen
from
python)

-

use mro
in v10

-

precalculated
dispatch
in v8

-

Moose::Role

-

-

Class::DBI

-

DBIx::Class::CDBICompat

-

DBIx::Class

-

????

-

hijack tests
rebuild core
rebase API

-

-

What this
talk isn't

-

Epic
Poem

-

Beowulf

-

Goth
Poetry

-

I'm awful at
poetry

-

Haiku

-

YAPC
Haiku

-

I'm awful at
singing

-

World's
shortest
blues song

-

"Didn't wake
up this
morning"

-

So I didn't
sleep instead

-

EST

-

MST

-

Anyway ...

-

-

The Mountain

-

SQL

-

Ignoring DDL
(CREATE/ALTER/DROP)

-

SQL::Translator
handles that

-

DML
(INSERT/SELECT
/UPDATE/DELETE)

-

generated
queries
optional

-

[ Thog, Al ]

-

collection
oriented

-

prepare()

-

prepare_cached()

-

-

table
space

-

DBI

-

DBIx::Connector
(David Wheeler)

-

  ->run

-

DBIx::Data::Store

-

  ->new_call_command

-

  ->run(sub ($dbh) {
    $dbh->prepare_cached(

-

  ->execute

-

-

  ->new_stream_command

-

  DBIx::Data::Stream::STH->new(

-

  ->next

-

  ->new_row_command

-

  carp "Query returned more than one row";

-

  return $result;

-

DBIx::Data::Store::CRUD

-

  ->new_delete_command
  # DELETE FROM table;

-

  ->new_insert_command

-

  ->new_update_command($args)
  # UPDATE table SET

-

  ->new_select_command
  # stream

-

  ->new_select_single_command
  # SELECT ... WHERE id = ?

-

  ->new_update_single_command
  ->new_insert_single_command

-

-

set

-

persistent
set

-

DBIx::Data::Collection::Set

-

  my @members = $set->flatten;

-

  $set->get({
    pk => 'sword'
  });

-

-

set

-

single
object
identity

-

  $set->_update_in_store(
    $member
  )

-

DBIx::Data::ChangeTracker

-

  tie()

-

  ->notify_set

-

transparent

-

-

collection
role
composition

-

-

Orthogonal

-

Orthogonal
Transparent
Persistence
Roles

-

-

DBIx::Data::Store

-

DBIx::Data::Store
git.shadowcat.co.uk

-

DBIx::Data::Store
git.shadowcat.co.uk
-FIN-