Module: Sequel::Plugins::PreparedStatements

Defined in:
lib/sequel/plugins/prepared_statements.rb

Overview

The prepared_statements plugin modifies the model to use prepared statements for instance level inserts and updates.

Note that this plugin is unsafe in some circumstances, as it can allow up to 2^N prepared statements to be created for each type of insert and update query, where N is the number of columns in the table. It is recommended that you use the prepared_statements_safe plugin in addition to this plugin to reduce the number of prepared statements that can be created, unless you tightly control how your model instances are saved.

Usage:

# Make all model subclasses use prepared statements  (called before loading subclasses)
Sequel::Model.plugin :prepared_statements

# Make the Album class use prepared statements
Album.plugin :prepared_statements

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Constant Summary

MUTEX =

Synchronize access to the integer sequence so that no two calls get the same integer.

Mutex.new
NEXT =

This plugin names prepared statements uniquely using an integer sequence, this lambda returns the next integer to use.

lambda{MUTEX.synchronize{i += 1}}

Class Method Summary collapse

Class Method Details

.apply(model) ⇒ Object

Setup the datastructure used to hold the prepared statements in the model.



32
33
34
# File 'lib/sequel/plugins/prepared_statements.rb', line 32

def self.apply(model)
  model.instance_variable_set(:@prepared_statements, {:insert=>{}, :insert_select=>{}, :update=>{}}.freeze)
end