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-