pdf viewer dll for c# : Add a jpeg to a pdf software Library cloud windows asp.net winforms class postgresql-9.4-A4120-part2747

Chapter 43. PL/Python- Python Procedural Language
43.8.1. Subtransaction Context Managers
Consider a function that implements a transfer between two accounts:
CREATE FUNCTION transfer_funds() RETURNS void AS $$
try:
plpy.execute("UPDATE accounts SET balance = balance - 100 WHERE account_name = ’joe’")
plpy.execute("UPDATE accounts SET balance = balance + 100 WHERE account_name = ’mary’")
except plpy.SPIError, e:
result = "error transferring funds: %s" % e.args
else:
result = "funds transferred correctly"
plan = plpy.prepare("INSERT INTO operations (result) VALUES ($1)", ["text"])
plpy.execute(plan, [result])
$$ LANGUAGE plpythonu;
If the second
UPDATE
statement results inan exception beingraised, this functionwill reporttheerror,
but the result of the first
UPDATE
will nevertheless be committed. In other words, the funds will be
withdrawn from Joe’s account, but will not be transferred to Mary’s account.
To avoid such issues, you can wrap your
plpy.execute
calls in an explicit subtransaction. The
plpy
module provides a helper object to manage explicit subtransactions that gets created with the
plpy.subtransaction()
function. Objects created by this function implement the context man-
ager interface
7
.Using explicit subtransactions we can rewrite our function as:
CREATE FUNCTION transfer_funds2() RETURNS void AS $$
try:
with plpy.subtransaction():
plpy.execute("UPDATE accounts SET balance = balance - 100 WHERE account_name = ’joe’")
plpy.execute("UPDATE accounts SET balance = balance + 100 WHERE account_name = ’mary’")
except plpy.SPIError, e:
result = "error transferring funds: %s" % e.args
else:
result = "funds transferred correctly"
plan = plpy.prepare("INSERT INTO operations (result) VALUES ($1)", ["text"])
plpy.execute(plan, [result])
$$ LANGUAGE plpythonu;
Note that the use of
try/catch
is still required. Otherwise the exception would propagate to the top
of the Python stack and would cause the whole function to abort with a PostgreSQL error, so that the
operations
table would not have any row insertedinto it. The subtransaction context manager does
nottrap errors, it only assures that all database operations executed inside its scope willbe atomically
committedor rolled back. A rollback of the subtransaction block occurs on anykind of exceptionexit,
not only ones caused by errors originating from database access. A regular Python exception raised
inside an explicit subtransaction block would also cause the subtransaction to be rolled back.
43.8.2. Older Python Versions
Context managers syntax using the
with
keyword is available by default in Python 2.6. If using
PL/Python with an older Python version, it is still possible to use explicit subtransactions, although
not as transparently. You can call the subtransaction manager’s
__enter__
and
__exit__
functions
7. http://docs.python.org/library/stdtypes.html#context-manager-types
1128
Add a jpeg to a pdf - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
add jpg to pdf preview; add picture to pdf preview
Add a jpeg to a pdf - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add an image to a pdf in preview; how to add a jpg to a pdf
Chapter 43. PL/Python- Python Procedural Language
using the
enter
and
exit
convenience aliases. The example function that transfers funds could be
written as:
CREATE FUNCTION transfer_funds_old() RETURNS void AS $$
try:
subxact = plpy.subtransaction()
subxact.enter()
try:
plpy.execute("UPDATE accounts SET balance = balance - 100 WHERE account_name = ’joe’")
plpy.execute("UPDATE accounts SET balance = balance + 100 WHERE account_name = ’mary’")
except:
import sys
subxact.exit(
*
sys.exc_info())
raise
else:
subxact.exit(None, None, None)
except plpy.SPIError, e:
result = "error transferring funds: %s" % e.args
else:
result = "funds transferred correctly"
plan = plpy.prepare("INSERT INTO operations (result) VALUES ($1)", ["text"])
plpy.execute(plan, [result])
$$ LANGUAGE plpythonu;
Note: Although context managers were implemented in Python 2.5, to use the
with
syntax in
that version you need to use a future statement8. Because of implementation details, however,
you cannot use future statements in PL/Python functions.
43.9. Utility Functions
The
plpy
module also provides the functions
plpy.debug(
msg
)
,
plpy.log(
msg
)
,
plpy.info(
msg
)
,
plpy.notice(
msg
)
,
plpy.warning(
msg
)
,
plpy.error(
msg
)
, and
plpy.fatal(
msg
)
.
plpy.error
and
plpy.fatal
actually raise a Python exception which, if
uncaught, propagates out to the calling query, causing the current transaction or subtransaction
to be aborted.
raise plpy.Error(
msg
)
and
raise plpy.Fatal(
msg
)
are equivalent to
calling
plpy.error
and
plpy.fatal
,respectively. The other functions only generate messages
of different priority levels. Whether messages of a particular priority are reported to the client,
written to the server log, or both is controlled by the log_min_messages and client_min_messages
configuration variables. See Chapter 18 for more information.
Another
set
of
utility
functions
are
plpy.quote_literal(
string
)
,
plpy.quote_nullable(
string
)
, and
plpy.quote_ident(
string
)
. They are equivalent to
the built-in quoting functions described in Section 9.4. They are useful when constructing ad-hoc
queries. A PL/Pythonequivalent of dynamic SQL from Example 40-1 would be:
plpy.execute("UPDATE tbl SET %s = %s WHERE key = %s" % (
plpy.quote_ident(colname),
8. http://docs.python.org/release/2.5/ref/future.html
1129
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
Convert PDF to JPEG Using VB.NET. Add necessary references: RasterEdge.Imaging.Basic. dll. RasterEdge.Imaging.Basic.Codec.dll. RasterEdge.Imaging.Drawing.dll.
adding images to pdf files; add image to pdf in preview
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Convert PDF to JPEG Using C#.NET. Add necessary references: RasterEdge.Imaging.Basic. dll. RasterEdge.Imaging.Basic.Codec.dll. RasterEdge.Imaging.Drawing.dll.
add signature image to pdf; add photo to pdf online
Chapter 43. PL/Python- Python Procedural Language
plpy.quote_nullable(newvalue),
plpy.quote_literal(keyvalue)))
43.10. Environment Variables
Some of the environment variables that are accepted by the Python interpreter can also be used to
affect PL/Python behavior. They would need to be set in the environment of the main PostgreSQL
server process, for example in a start script. The available environment variables depend on the ver-
sion of Python; see the Python documentation for details. At the time of this writing, the following
environment variables have an affect on PL/Python, assuming an adequate Python version:
PYTHONHOME
PYTHONPATH
PYTHONY2K
PYTHONOPTIMIZE
PYTHONDEBUG
PYTHONVERBOSE
PYTHONCASEOK
PYTHONDONTWRITEBYTECODE
PYTHONIOENCODING
PYTHONUSERBASE
PYTHONHASHSEED
(It appears to be a Python implementation detail beyond the control of PL/Python that some of the
environment variables listed on the
python
manpage are onlyeffective in acommand-line interpreter
and not an embedded Python interpreter.)
1130
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
add picture to pdf online; add a jpeg to a pdf
C# PDF Password Library: add, remove, edit PDF file password in C#
C# Sample Code: Add Password to PDF with Permission Settings Applied in C#.NET. This example shows how to add PDF file password with access permission setting.
adding images to pdf; add jpeg signature to pdf
Chapter 44. Server Programming Interface
The Server Programming Interface (SPI) gives writers of user-defined C functions the ability to run
SQL commands inside their functions. SPI is a set of interface functions to simplify access to the
parser, planner, and executor. SPI also does some memory management.
Note: The available procedural languages provide various means to execute SQL commands
from procedures. Most of these facilities arebased onSPI, sothis documentationmight be of use
for users of those languages as well.
To avoid misunderstanding we’ll use the term “function” when we speak of SPI interface functions
and “procedure” for a user-defined C-function that is using SPI.
Note that if a command invoked via SPI fails, then control will not be returned to your procedure.
Rather, the transaction or subtransaction in which your procedure executes will be rolled back. (This
mightseem surprising given that the SPI functions mostly have documented error-returnconventions.
Those conventions only apply for errors detected within the SPI functions themselves, however.) It
is possible to recover control after an error by establishing your own subtransaction surrounding SPI
calls that might fail. This is not currently documented because the mechanisms required are still in
flux.
SPI functionsreturn anonnegativeresultonsuccess (either viaa returned integer valueor inthe global
variable
SPI_result
,as described below). On error, a negative result or
NULL
will be returned.
Source code files that use SPI must include the header file
executor/spi.h
.
44.1. Interface Functions
SPI_connect
Name
SPI_connect — connect a procedure to the SPI manager
Synopsis
int SPI_connect(void)
Description
SPI_connect
opens a connection from a procedure invocation to the SPI manager. You must call
this function if you want to execute commands through SPI. Some utility SPI functions can be called
from unconnected procedures.
If your procedure is already connected,
SPI_connect
will return the error code
SPI_ERROR_CONNECT. This could happen if a procedure that has called
SPI_connect
directly
1131
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
adding jpg to pdf; add photo to pdf reader
C# Create PDF from images Library to convert Jpeg, png images to
Load 3 image files (BMP, JPEG and PNG Bitmap(Program.RootPath + "\\" 1.jpg")); images.Add(new Bitmap RootPath + "\\" 1.png")); / Build a PDF document with
adding image to pdf form; how to add an image to a pdf
SPI_connect
calls another procedure that calls
SPI_connect
. While recursive calls to the SPI manager are
permittedwhenan SQL command calledthrough SPI invokes another function that uses SPI, directly
nested calls to
SPI_connect
and
SPI_finish
are forbidden. (But see
SPI_push
and
SPI_pop
.)
Return Value
SPI_OK_CONNECT
on success
SPI_ERROR_CONNECT
on error
1132
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
C#: Convert PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress PDF; C# C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
adding images to pdf forms; add picture to pdf reader
C# PDF Digital Signature Library: add, remove, update PDF digital
C#: Convert PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress PDF; C# C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
add jpg to pdf; add image pdf
SPI_finish
Name
SPI_finish — disconnect a procedure from the SPI manager
Synopsis
int SPI_finish(void)
Description
SPI_finish
closes an existing connection to the SPI manager. You must call this function after
completing the SPI operations needed during your procedure’s current invocation. You do not need
to worry about making this happen, however, if you abort the transaction via
elog(ERROR)
.In that
case SPI will clean itself up automatically.
If
SPI_finish
iscalledwithouthavinga valid connection, it willreturn
SPI_ERROR_UNCONNECTED
.
There is nofundamental problem with this; it means that the SPI manager has nothing to do.
Return Value
SPI_OK_FINISH
if properly disconnected
SPI_ERROR_UNCONNECTED
if called from an unconnected procedure
1133
SPI_push
Name
SPI_push — push SPI stack to allow recursive SPI usage
Synopsis
void SPI_push(void)
Description
SPI_push
shouldbe calledbefore executinganother procedure thatmight itself wish to use SPI. After
SPI_push
,SPI is no longer in a “connected” state, and SPI function calls will be rejected unless a
fresh
SPI_connect
is done. This ensures a clean separation between your procedure’s SPI state and
that of another procedure you call. After the other procedure returns, call
SPI_pop
to restore access
to your own SPI state.
Note that
SPI_execute
and related functions automatically do the equivalent of
SPI_push
before
passing control back to the SQL execution engine, so it is not necessary for you to worry about this
when using those functions. Only when you are directly calling arbitrary code that might contain
SPI_connect
calls do you need to issue
SPI_push
and
SPI_pop
.
1134
SPI_pop
Name
SPI_pop — pop SPI stackto return from recursive SPI usage
Synopsis
void SPI_pop(void)
Description
SPI_pop
pops the previous environment from the SPI call stack. See
SPI_push
.
1135
SPI_execute
Name
SPI_execute — execute a command
Synopsis
int SPI_execute(const char
command
, bool
read_only
, long
count
)
Description
SPI_execute
executes the specified SQL command for
count
rows. If
read_only
is
true
,the
command must be read-only, and execution overheadis somewhat reduced.
This function can only be called from a connected procedure.
If
count
is zero then the command is executed for all rows that it applies to. If
count
is greater than
zero, then no more than
count
rows will be retrieved; execution stops when the count is reached,
much like adding a
LIMIT
clause to the query. For example,
SPI_execute("SELECT
*
FROM foo", true, 5);
will retrieve at most 5 rows from the table. Note that such a limit is only effective whenthe command
actually returns rows. For example,
SPI_execute("INSERT INTO foo SELECT
*
FROM bar", false, 5);
inserts all rows from
bar
,ignoringthe
count
parameter. However, with
SPI_execute("INSERT INTO foo SELECT
*
FROM bar RETURNING
*
", false, 5);
at most 5 rows would be inserted, since execution would stop after the fifth
RETURNING
result row is
retrieved.
You can pass multiple commands in one string;
SPI_execute
returns the result for the command
executed last. The
count
limit applies to each command separately (even though only the last result
will actually be returned). The limit is not applied to any hidden commands generated by rules.
When
read_only
is
false
,
SPI_execute
increments the command counter and computes a new
snapshot before executing each command in the string. The snapshot does not actually change
if the current transaction isolation level is
SERIALIZABLE
or
REPEATABLE READ
, but in
READ
COMMITTED
mode the snapshot update allows each command to see the results of newly committed
transactions from other sessions. This is essential for consistent behavior when the commands are
modifying the database.
When
read_only
is
true
,
SPI_execute
does not update either the snapshot or the command
counter, and it allows only plain
SELECT
commands to appear in the command string. The com-
mands are executed using the snapshot previously established for the surrounding query. This execu-
tion mode is somewhat faster than the read/write mode due to eliminating per-command overhead. It
also allows genuinely stable functions to be built: since successive executions will all use the same
snapshot, there will be no change in the results.
1136
SPI_execute
It is generally unwise to mix read-only and read-write commands within a single function using SPI;
that could result in very confusing behavior, since the read-only queries would not see the results of
any database updates done by the read-write queries.
The actual number of rows for which the (last) command was executed is returned in the
global variable
SPI_processed
. If the return value of the function is
SPI_OK_SELECT
,
SPI_OK_INSERT_RETURNING
,
SPI_OK_DELETE_RETURNING
, or
SPI_OK_UPDATE_RETURNING
,
then you can use the global pointer
SPITupleTable
*
SPI_tuptable
to access the result rows.
Some utility commands (such as
EXPLAIN
)also return row sets, and
SPI_tuptable
will contain the
result in these cases too. Some utility commands (
COPY
,
CREATE TABLE AS
)don’t return a row set,
so
SPI_tuptable
is NULL, but they still returnthe number of rows processed in
SPI_processed
.
The structure
SPITupleTable
is defined thus:
typedef struct
{
MemoryContext tuptabcxt;
/
*
memory context of result table
*
/
uint32
alloced;
/
*
number of alloced vals
*
/
uint32
free;
/
*
number of free vals
*
/
TupleDesc
tupdesc;
/
*
row descriptor
*
/
HeapTuple
*
vals;
/
*
rows
*
/
} SPITupleTable;
vals
is an array of pointers to rows. (The number of valid entries is given by
SPI_processed
.)
tupdesc
is a row descriptor which you can pass to SPI functions dealing with rows.
tuptabcxt
,
alloced
,and
free
are internal fields not intended for use by SPI callers.
SPI_finish
frees all
SPITupleTable
sallocated during the current procedure. You can free a par-
ticular result table earlier, if you are done with it, by calling
SPI_freetuptable
.
Arguments
const char
command
string containing command to execute
bool
read_only
true
for read-only execution
long
count
maximum number of rows to return, or
0
for no limit
Return Value
If the execution of the command was successful then one of the following (nonnegative) values will
be returned:
SPI_OK_SELECT
if a
SELECT
(but not
SELECT INTO
)was executed
SPI_OK_SELINTO
if a
SELECT INTO
was executed
1137
Documents you may be interested
Documents you may be interested