text:
It has been a real pleasure dealing with such an honest and knowledgeable person rather than simply a broker and now someone we truly feel we can call a friend. We will very definitely refer you to any of our friends knowing that you will treat them as fairly and professionally as you have with us.
~ John & Lynn Ringseis
Lagoon 410
My advice to anyone buying a catamaran, new or used, is to find a real professional, a true buyer-broker with vast experience and integrity, who understands that counting happy customers is far more important than turning a fast dollar.
~ Andreas Julseth
African Innovation
I just wanted you to know that your level of service and the high degree of customer satisfaction have made owning my Dolphin a great experience.
~ Daniel Zlotnick
Multihull sailors need adequate charging sources to routinely replenish the battery power they use, and the proper controls for those charging sources to protect and extend the life of their battery banks on board. In this two-part column we'll review the charging controls on the market and their operation.
Each charging source you install on
your boat must have some sort of charging control to limit or shut off the
current once the batteries are full.
Alternators and other charging sources are designed strictly to provide
power, a given amount for the conditions they operate under. If no electrical "brain" in the
form of an automatic charge control is in the system, and the operator doesn't
manually intervene, charging sources will supply power indefinitely (as
operating conditions allow)
Automatic Vs.
Manual Charge Controls
Charge control can be achieved automatically, manually, or some combination of the two. Since automatic controls are generally reliable and modestly priced, boaters usually choose them over manual controls.
Alternator controls are almost always automatic, although I can think of two devices for alternators where both automatic and manual control is available. The first is an adjustable 2- or 3-stage control for a high-output alternator. The control functions automatically, but the user can tweak the voltage setpoint to allow for different motoring patternsa higher setpoint for occasional motoring and a lower setpoint for more frequent motoring. The second device, for many years marketed under the name Auto-Mac, allows the user to dial up the charging current even after the standard voltage regulator determines that it's time to limit the current. The Auto-Mac, originally intended to over-ride the voltage regulator on a standard alternator, is less popular now that high-output alternators and fully automatic 3-stage controls have come down in price.
Alternator controls are almost
always automatic. Some liveaboard
boaters choose to manually control the output from a renewable charger, at
least initially, in an effort to save money or maintain simplicity in the
system. Manually stopping the rotor of a
wind or water generator or switching off the output of a solar panel is
relatively easy and can be effective, but failure to do when the batteries are
full can be an expensive mistake. And
without an automatic controller you won't be able to keep your batteries
charged if you have to leave your boat for an extended period of time.
Charge Controls
for Alternators
Charge controls for alternators are commonly known as voltage regulators, although I feel that name is a bit dated, especially for multi-stage controls designed to achieve high performance. An alternator control does indeed regulate output using some voltage setpointor multiple setpoints if a multi-stage control is usedas a reference, but it is the amount of current that is being regulated to prevent battery overcharge.
For a given RPM, the output of an alternator is regulated simply by reducing or increasing the level of what is know as the "field current", or the small amount of DC current needed to create electro-magnetism inside the alternator. The smaller the amount of current passing through the field current windings, the weaker the magnetic field and the less electricity produced by the alternator. Instead of handling the full output current, as do controls for permanent magnet electrical generating devices such as wind and water generators, an alternator control handles only the field current, which varies from 0 to 6 amps for a standard alternator and 0 to 10 amps for a high-output alternator. This is why charge controls for alternators are typically not suitable to handle the output of renewable chargers, and why you need a seperate charge control for each unit in a dual alternator installation.
There are 3 main battery charging cycles to consider when you have a relatively high output charging source: bulk, absorption and float. Standard 2-stage voltage regulators allow for the bulk cycle and essentially an indefinite absorption cycle (they don't drop to a lower float level). Battery protection is achieved through a reduced voltage setpoint, which to some degree compromises the performance of the charging source. 2-stage controls work fine for most powerboat applications, using a lower voltage setpoint, and for sailors who motor infrequently, using a higher voltage setpoint, but 3-stage controls offer a higher level of performance and battery protection to sailors and even power boaters who spend time at anchor and want to minimize engine-running time just for charging batteries.
2-stage controls are typically installed inside the alternator, and thus the voltage setpoint is not adjustable. This type is the most common and least desirable. Externally mounted, adjustable controls are preferable since the voltage setpoint can be adjusted to meet individual needs. 3-stage controls are best since they automatically provide a good balance between performance charging and battery protection.
There are several good alternator
controls on the market, including the Ample Power "Next Step
Regulator", the Heart Interface "incharge" control, and Balmar's
new "Max-Charge" control. The
Next Step and Max-Charge models have advanced functions and sophistication. For example, the Max Charge has everything
you could ask for in a high-performance alternator control. It has all the usual features, including
3-stage operation, optional temperature compensation, a battery equalization
feature, and monitoring functions, but it offers much more. This versatile control also has:
Part II
In the last issue we covered charge controls for alternators. In Part II we'll examine controls for other charging sources, including battery chargers and inverter-chargers, as well as solar-, wind- and water-powered generators.
Charge Controls for Battery Chargers and Inverter-Chargers
Battery chargers, and inverter-chargers in the charging mode, usually have an internal charge control circuit; on some models the voltage setpoints are adjustable. High-performance models take the batteries through a 3-stage charging cycle and automatically shut off when the batteries are full. Less sophisticated "trickle-charge" models reduce charging current to a low but constant trickle charge that can spell disaster for batteries when the charger is plugged into dockside power and left unattended. If there is no electrical load to moderate battery voltage, the voltage can rise to unacceptable limits and destroy your batteries.
If you are in the market for a battery charger, make sure to purchase one with 3-stage operation. An inverter-charger may make the most sense if you presently or in the near future wish to operate household appliances on board.
Charge Controls for Renewables: Solar, Wind & Water Generators
The output from solar, wind- and water-powered generators is typically fed to individual charge controls for each source, although there are some multi-source controllers on the market that can handle charging current from any renewable power source up to the control's maximum current limit. If the idea of a single controller intrigues you, your aim should be to find one that has the capacity to handle your present as well as your future needs. For instance, a multi-source control rated at 30 amps may be able to handle a 20-amp wind generator and two 60-watt solar panels, but if you decide to add more solar panels at a later date a second controller will be needed.
3-stage charging is less of a concern for renewable chargers. Unlike high-output charging sources, their current output is usually low compared to the size of the battery bank. This means that almost all of the charging power is converted to stored power in the batteries, reducing the need for what we call an absorption cycle. When the voltage setpoint of what would be considered the bulk charging cycle is reached, the batteries will be nearly full. When the voltage setpoint is reached most renewable charger controls simply disconnect the circuit until the voltage falls to some preset level, then reconnect again. This on-off action continues until the batteries are completely filled.
A relatively new feature on charge controllers is something called pulse width modulation (PWM), which automatically varies the duration of the charging pulse to optimize charging efficiency. Many of the new renewable charge controls have PWM circuitry.
Charge Control Features & Options
Battery Type Selection
Most alternator and battery charger controls allow the operator to select which type of batteries they are using, either gel or wet. Changing the battery type selector switch on the control changes the bulk voltage setpoint, which is usually 14.1 or 14.2 for gel batteries and 14.4 for wet batteries. Solar, wind and water controls typically use the lower of these two values and are therefore suitable for use with either type of battery. The slight difference in voltage (and therefore charging performance) isn't a problem with renewable chargers, since by the time the voltage setpoint is reached the batteries are very nearly full, and there is no concern about how long an engine is running.
Temperature Compensation
An important optional feature found on many controls for high output charging sources is temperature compensation. All charging controls base their operation on battery voltage and its relationship to state of charge. The relationship between battery voltage and state of charge, however, changes with battery temperature. In fact the difference can be rather dramatic when the batteries are very warm or very cold. A temperature compensation circuit in an alternator or battery charger control ensures that the various charging cycles begin and end when they are supposed to, and that the batteries aren't routinely under- or over-charged.
Controls with temperature compensation come with a temperature sensor that adheres to one battery in the bank. A low-voltage wire links the sensor to the the charge control. Locating the sensor on a battery in the middle of the bank will give best accuracy.
As with multi-stage charging, temperature compensation is less of an issue with renewable charge controls since the current levels are usually low relative to battery capacity. Even so, if this option is available for a solar, wind or water controller, I recommend you opt for it.
Equalization Cycle Feature
Some alternator and battery charger controls allow you to equalize wet batteries. They do this by temporarily, under controlled conditions with low charging current, allowing battery voltage to rise until the batteries are gassing vigorously to remove sulphate deposits on the battery plates. The operator should always monitor conditions during an equalization cycle, and keep in mind that gassing means the release of hydrogen gas. Proper ventilation and the elimination of any possibility of sparks or open flames is essential. Under no circumstances should you attempt to equalize gel batteriesthey don't need it and a potentially dangerous condition will result from applying high voltage to a gel battery.
Monitoring Functions
Many charge controls incorporate monitoring functions so you can see what is happening as the batteries are charged.Some have basic LED lights that indicate if there is power to the control, if conditions are right for charging (on solar, wind & water controls), which charging cycle is in process (bulk, absorption, float), and basic battery state of charge information. Other controls display charging amperage with either analog or digital displays.
Low Voltage Disconnect
Some small to modest capacity solar charge controllers have provisions for a Low Voltage Disconnect (LVD) circuit for the house loads (up to the unit's rated current capacity). This feature protects the batteries from over-discharge by disconnecting the appliance loads when battery voltage drops to a preset level. LVD circuits are independent of the charge control circuit, but similar enough to make them compatible when mounted in a single control device.
These are stand up people, who make a stand up product. I would buy from them again in a heartbeat.
~ Jay Clark, Dolphin 460
"Sugar Shack"
I just wanted you to know that your level of service and the high degree of customer satisfaction have made owning my Dolphin a great experience.
~ Daniel Zlotnick, Dolphin
"Sugar Shack"


text: The President May Get The Authority To Kick Us All OfflineMichael McWhertor6/19/10 1:00amFiled to: Governmentonly in the u.s.InternetXbox Liveplaystation network646EditPromoteShare to KinjaToggle Conversation toolsGo to permalinkAs weird and scary as it sounds, there may be a time when you'll be able to blame your server going down on the current U.S. President instead of your internet provider.AdvertisementA new U.S. Senate bill known as the "Protecting Cyberspace as a National Asset" Act, would enable the president to access a "kill-switch" that would essentially allow him/her to pull the plug on portions of the internet in a cyber security emergency. According to Senator Susan Collins (R-ME), "…we cannot afford to wait for a cyber 9/11 before our government realizes the importance of protecting our cyber resources."What portions of the internet would this affect? That's up to Homeland Security, according to a report on the proposed bill from CNET. Essentially, any company that "relies on the internet, the telephone system, or any other component of the U.S. information infrastructure" could be required to operate under the command of the National Center for Cybersecurity and Communications (NCCC), a new division of Homeland Security that would be put into operation if the bill passes. These companies would be required to keep their security measures up to NCCC standards. If they chose not to abide by the emergency shut down procedures put in place, they would be subject to a fine.AdvertisementFor online gamers, this may seem to be an attack on our recreational time. In many cases, we are paying for the online services we utilize, such as Xbox Live or subscription games. In turn, we rely on them to run 'round the clock (with the exception of regularly scheduled maintenance periods). If these networks were to all of a sudden go down for a lengthy period of time, would we get our money back? If we were at a pivotal point in our game, would our items and status at the time of the shut down be returned upon the server's revival?It would be a nuisance more than anything else, especially seeing as many online games cannot be played offline (such as WoW, EVE, Guild Wars and EverQuest ). A compromise mentioned in the bill states that companies would be reimbursed for money lost while their networks were forced to go offline. However, in the midst of whatever crisis has caused the internet be shut down, the game networks themselves may lose subscribers, which would affect business in the long term.Roping online game networks into this group of internet outlets that could be involved in a security breach if hacked may seem unfair, seeing as online gaming networks really don't leave their users room to store potentially valuable data, aside from perhaps credit card information (unless you count an item that drops .001% of the time that you desperately need to complete your gear set). Sure, they're social networking outlets as well. I suppose you could see a group of orcs or gnomes hanging out and argue that they could be real-life terrorists planning an attack, but it's unlikely that your speculation could be proven true. Gaming networks are not where the threat of national security compromise lies. People log on to them to play a game-to socialize, and nothing more.SponsoredThe idea of disconnecting all of our nation's servers seems like a knee-jerk reaction, and perhaps too much power for one person to hold. A better idea might be to beef up security on the sites that truly do have sensitive information, allowing the plug to be pulled on those sites in the event of a "cyber emergency."My only questions are what exactly could be considered a "cyber emergency" and what is the likelihood that such an event will actually occur?AdvertisementSenators propose granting president emergency Internet power [Cnet]Reply646 repliesLeave a reply

subset: commoncrawl


text:
Adult softball registration is open
Owen County Parks & Recreation is holding adult softball registration for the upcoming season. Leagues offered will be Church Co-ed, Open Co-ed, and Men's Open. Co-ed leagues will be on Monday, Tuesday, or Thursday and, Men's Open on Friday. Fee for Church Co-ed is $250, Open leagues are $350. Leagues will start May 2. For information or to register, call 484-3225.
If you currently subscribe or have subscribed in the past to the Owenton News, then simply find your account number on your mailing label and enter it below.
Click the question mark below to see where your account ID appears on your mailing label.
If you are new to the award winning Owenton News and wish to get a subscription or simply gain access to our online content then please enter your ZIP code below and continue to setup your account.
ZIP Code: | |


text:
This chapter describes the Oracle performance extensions to the Java Database Connectivity (JDBC) standard.
This chapter covers the following topics:
You can reduce the number of round-trips to the database, thereby improving application performance, by grouping multiple UPDATE
, or INSERT
statements into a single batch and having the whole batch sent to the database and processed in one trip. This is referred to as update batching.
The JDBC 2.0 specification refers to update batching as batch updates.This is especially useful with prepared statements, when you are repeating the same statement with different bind variables.
Oracle JDBC supports two distinct models for update batching:
The standard model, implementing the JDBC 2.0 specification, which is referred to as standard update batching
The Oracle-specific model, independent of the JDBC 2.0 specification, which is referred to as Oracle update batching
It is important to be aware that you cannot mix these models. In any single application, you can use one model or the other, but not both. Oracle JDBC driver will throw exceptions when you mix these.This section covers the following topics:
This section compares and contrasts the general models and types of statements supported for standard update batching and Oracle update batching.
Oracle Model Versus Standard Model
Oracle update batching uses a batch value that typically results in implicit processing of a batch. The batch value is the number of operations you want to add to a batch for each trip to the database. As soon as that many operations have been added to the batch, the batch is processed. Note the following:
You can set a default batch for the connection object, which applies to any prepared statement run in that connection.
For any individual prepared statement object, you can set a statement batch value that overrides the connection batch value.
You can choose to explicitly process a batch at any time, overriding both the connection batch value and the statement batch value.
Standard update batching is a manual, explicit model. There is no batch value. You manually add operations to the batch, and then, explicitly choose when to process the batch.
Oracle recommends that you use JDBC standard features when possible. This recommendation applies to update batching as well. Oracle update batching is retained primarily for backwards compatibility.
For both standard update batching and Oracle update batching, Oracle recommends you to keep the batch sizes in the general range of 50 to 100. This is because though the drivers support larger batches, they in turn result in a large memory footprint with no corresponding increase in performance. Very large batches usually result in a decline in performance compared to smaller batches.
As implemented by Oracle, update batching is intended for use with prepared statements, when you are repeating the same statement with different bind variables. Be aware of the following:
Oracle update batching supports only prepared statement objects. For a callable statement, both the connection default batch value and the statement batch value are overridden with a value of 1. In an Oracle generic statement, there is no statement batch value, and the connection default batch value is overridden with a value of 1.
To adhere to the JDBC 2.0 standard, Oracle implementation of standard update batching supports callable statements, without OUT
parameters, and generic statements, as well as prepared statements. You can migrate standard update batching into an Oracle JDBC application without difficulty.
You can batch only UPDATE
, or DELETE
operations. Processing a batch that includes an operation that attempts to return a result set will cause an exception.
The Oracle implementation of standard update batching does not implement true batching for generic statements and callable statements. Although Oracle JDBC supports the use of standard batching syntax forStatement
and CallableStatement
objects, you will see performance improvement for only PreparedStatement
objects.The Oracle update batching feature associates a batch value with each prepared statement object. With Oracle update batching, instead of the JDBC driver running a prepared statement each time the executeUpdate
method is called, the driver adds the statement to a batch of accumulated processing requests. The driver will pass all the operations to the database for processing once the batch value is reached. For example, if the batch value is 10, then each batch of 10 operations will be sent to the database and processed in one trip.
A method in the OracleConnection
class enables you to set a default batch value for the Oracle connection as a whole, and this batch value applies to any Oracle prepared statement in the connection. For any particular Oracle prepared statement, a method in the OraclePreparedStatement
class enables you to set a statement batch value that overrides the connection batch value. You can also override both batch values by choosing to manually process the pending batch.
Do not mix standard update batching with Oracle update batching in the same application. The JDBC driver will throw an exception when you mix these.
Disable auto-commit mode if you use either update batching model. In case an error occurs while you are processing a batch, this provides you the option of committing or rolling back the operations that ran successfully prior to the error.
Note the following limitations and implementation details regarding Oracle update batching:
By default, there is no statement batch value and the connection batch value is 1.
Batch values between 5 and 30 tend to be the most effective. Setting a very high value might even have a negative effect. It is worth trying different values to verify the effectiveness for your particular application.
Regardless of the batch value in effect, if any of the bind variables of an Oracle prepared statement is a stream type, then Oracle JDBC driver sets the batch value to 1 and sends any queued requests to the database for processing.
Oracle JDBC driver automatically runs the sendBatch
method of an Oracle prepared statement in any of the following circumstances:
The connection receives a COMMIT
request, either as a result of calling the commit
method or as a result of auto-commit mode.
The statement receives a close
The connection receives a close
A connectionCOMMIT
request, statement close, or connection close has an effect on a pending batch only if you use Oracle update batching. However, if you use standard update batching, then it has no effect on a pending batch.If the connection receives a ROLLBACK
request before sendBatch
has been called, then the pending batched operations are not removed. You must explicitly call clearBatch
to do this.
You can specify a default batch value for any Oracle prepared statement in your Oracle connection. To do this, use the setDefaultExecuteBatch
method of the OracleConnection
object. For example, the following code sets the default batch value to 20 for all prepared statement objects associated with the conn
connection object:
Even though this sets the default batch value for all the prepared statements of the connection, you can override it by calling the setExecuteBatch
method of the oracle.jdbc.OraclePreparedStatement
interface on individual Oracle prepared statements.
The connection batch value will apply to statement objects created after this batch value was set.
Note that instead of calling the setDefaultExecuteBatch
method, you can set the defaultBatchValue
Java property if you use a Java Properties
object in establishing the connection.
Use the following steps to set the statement batch value for a particular Oracle prepared statement. This will override any connection batch value set using the setDefaultExecuteBatch
method of the OracleConnection
instance for the connection in which the statement is processed.
Write your prepared statement, and specify input values for the first row, as follows:
PreparedStatement ps = conn.prepareStatement ("INSERT INTO dept VALUES (?,?,?)"); ps.setInt (1,12); ps.setString (2,"Oracle"); ps.setString (3,"USA");
Cast your prepared statement to OraclePreparedStatement
, and apply the setExecuteBatch
method. In this example, the batch size of the statement is set to 2.
If you wish, insert the getExecuteBatch
method at any point in the program to check the default batch value for the statement, as follows:
System.out.println (" Statement Execute Batch Value " + ((OraclePreparedStatement)ps).getExecuteBatch());
If you send an execute-update call to the database at this point, then no data will be sent to the database, and the call will return 0.
// No data is sent to the database by this call to executeUpdate System.out.println ("Number of rows updated so far: " + ps.executeUpdate ());
If you enter a set of input values for a second row and an execute-update, then the number of batch calls to executeUpdate
will be equal to the batch value of 2. The data will be sent to the database, and both rows will be inserted in a single round-trip.
ps.setInt (1, 11); ps.setString (2, "Applications"); ps.setString (3, "Indonesia"); int rows = ps.executeUpdate (); System.out.println ("Number of rows updated now: " + rows); ps.close ();
To check the overall connection batch value of an Oracle connection instance, use the OracleConnection
class getDefaultExecuteBatch
Integer batch_val = ((OracleConnection)conn).getDefaultExecuteBatch();
To check the particular statement batch value of an Oracle prepared statement, use the OraclePreparedStatement
class getExecuteBatch
Integer batch_val = ((OraclePreparedStatement)ps).getExecuteBatch();
If no statement batch value has been set, thengetExecuteBatch
will return the connection batch value.If you want to process accumulated operations before the batch value in effect is reached, then use the sendBatch
method of the OraclePreparedStatement
For this example, presume you set the connection batch value to 20. This sets the default batch value for all prepared statement objects associated with the connection to 20. You can accomplish this by casting your connection to OracleConnection
and applying the setDefaultExecuteBatch
method for the connection, as follows:
((OracleConnection)conn).setDefaultExecuteBatch (20);
Override the batch value as follows:
Write your prepared statement, specify input values for the first row, and then process the statement, as follows:
PreparedStatement ps = conn.prepareStatement ("insert into dept values (?, ?, ?)"); ps.setInt (1, 32); ps.setString (2, "Oracle"); ps.setString (3, "USA"); System.out.println (ps.executeUpdate ());
The batch is not processed at this point. The ps.executeUpdate
method returns 0
If you enter a set of input values for a second operation and call executeUpdate
again, then the data will still not be sent to the database, because the batch value in effect for the statement is the connection batch value, which is 20
ps.setInt (1, 33); ps.setString (2, "Applications"); ps.setString (3, "Indonesia"); // this batch is still not executed at this point int rows = ps.executeUpdate (); System.out.println ("Number of rows updated before calling sendBatch: " + rows);
Note that the value of rows
in the println
statement is 0
If you apply the sendBatch
method at this point, then the two previously batched operations will be sent to the database in a single round-trip. The sendBatch
method also returns the total number of updated rows. This property of sendBatch
is used by println
to print the number of updated rows.
// Execution of both previously batched executes will happen // at this point. The number of rows updated will be // returned by sendBatch. rows = ((OraclePreparedStatement)ps).sendBatch (); System.out.println ("Number of rows updated by calling sendBatch: " + rows); ps.close ();
After you process the batch, you must still commit the changes, presuming auto-commit is disabled as recommended.
Calling commit
on the connection object in Oracle batching not only commits operations in batches that have been processed, but also issues an implicit sendBatch
call to process all pending batches. So commit
effectively commits changes for all operations that have been added to a batch.
In a nonbatching situation, the executeUpdate
method of an OraclePreparedStatement
object will return the number of database rows affected by the operation.
In an Oracle batching situation, this method returns the number of rows affected at the time the method is invoked, as follows:
If an executeUpdate
call results in the operation being added to the batch, then the method returns a value of 0, because nothing was written to the database yet.
If an executeUpdate
call results in the batch value being reached and the batch being processed, then the method will return the total number of rows affected by all operations in the batch.
Similarly, the sendBatch
method of an OraclePreparedStatement
object returns the total number of rows affected by all operations in the batch.
Example 23-1 illustrates the use of Oracle update batching.
Example 23-1 Oracle Update Batching
The following example illustrates how you use the Oracle update batching feature. It assumes you have imported the oracle.driver.*
... OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); conn.setAutoCommit(false); PreparedStatement ps = conn.prepareStatement("insert into dept values (?, ?, ?)"); //Change batch size for this statement to 3 ((OraclePreparedStatement)ps).setExecuteBatch (3); ps.setInt(1, 23); ps.setString(2, "Sales"); ps.setString(3, "USA"); ps.executeUpdate(); //JDBC queues this for later execution ps.setInt(1, 24); ps.setString(2, "Blue Sky"); ps.setString(3, "Montana"); ps.executeUpdate(); //JDBC queues this for later execution ps.setInt(1, 25); ps.setString(2, "Applications"); ps.setString(3, "India"); ps.executeUpdate(); //The queue size equals the batch value of 3 //JDBC sends the requests to the database ps.setInt(1, 26); ps.setString(2, "HR"); ps.setString(3, "Mongolia"); ps.executeUpdate(); //JDBC queues this for later execution ((OraclePreparedStatement)ps).sendBatch(); // JDBC sends the queued request conn.commit(); ps.close(); ...
Updates deferred through batching can affect the results of other queries. In the following example, if the first query is deferred due to batching, then the second will return unexpected results:UPDATE emp SET name = "Sue" WHERE name = "Bob"; SELECT name FROM emp WHERE name = "Sue";
If any one of the batched operations fails to complete successfully or attempts to return a result set during an executeBatch
call, then the processing stops and a java.sql.BatchUpdateException
is generated.
If the exception is raised, you can call the getUpdateCounts
method on the BatchUpdateException
object to retrieve the update count. This method returns an int
array of update counts, just as the executeBatch
method does.
In Oracle Database 11g Release 2 (11.2), the integer array returned contains n Statement.EXECUTE_FAILED
entries, where n is the size of the batch. However, this does not indicate where in the batch the error occurred. The only option you have is to roll back the transaction.
In Oracle Database 11g Release 2 (11.2), the integer array returned contains n Statement.SUCCESS_NO_INFO
entries, where n is the number of elements in the batch that have been successfully executed.
The execution of the batch always stops with the first element of the batch that generates an error.JDBC standard update batching, unlike the Oracle update batching model, depends on explicitly adding statements to the batch using an addBatch
method and explicitly processing the batch using an executeBatch
method. In the Oracle model, you call executeUpdate
as in a nonbatching situation, but whether an operation is added to the batch or the whole batch is processed is typically determined implicitly, depending on whether or not a predetermined batch value is reached.
Do not mix standard update batching with Oracle update batching in the same application. Oracle JDBC driver will throw exceptions when these are mixed.
Disable auto-commit mode if you use either update batching model. In case an error occurs while you are processing a batch, this provides you the option of committing or rolling back the operations that ran successfully prior to the error.
This section discusses the limitations and implementation details regarding the Oracle implementation of standard update batching.
In Oracle JDBC applications, update batching is intended for use with prepared statements that are being processed repeatedly with different sets of bind values.
The Oracle implementation of standard update batching does not implement true batching for generic statements and callable statements. Even though Oracle JDBC supports the use of standard batching for Statement
and CallableStatement
objects, you are unlikely to see performance improvement.
When any statement object is first created, its statement batch is empty. Use the standard addBatch
method to add an operation to the statement batch. This method is specified in the standard java.sql.Statement
, PreparedStatement
, and CallableStatement
interfaces, which are implemented by the oracle.jdbc.OracleStatement
, OraclePreparedStatement
, and OracleCallableStatement
interfaces, respectively.
For a Statement
object, the addBatch
method takes a Java String
with a SQL operation as input. For example:
... Statement stmt = conn.createStatement(); stmt.addBatch("INSERT INTO emp VALUES(1000, 'Joe Jones')"); stmt.addBatch("INSERT INTO dept VALUES(260, 'Sales')"); stmt.addBatch("INSERT INTO emp_dept VALUES(1000, 260)"); ...
At this point, three operations are in the batch.
Remember, however, that in the Oracle implementation of standard update batching, you will probably see no performance improvement in batching generic statements.For prepared statements, update batching is used to batch multiple runs of the same statement with different sets of bind parameters. For a PreparedStatement
or OraclePreparedStatement
object, the addBatch
method takes no input. It simply adds the operation to the batch using the bind parameters last set by the appropriate set
methods. This is also true for CallableStatement
or OracleCallableStatement
objects, but remember that in the Oracle implementation of standard update batching, you will probably see no performance improvement in batching callable statements.
For example:
... PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees VALUES(?, ?)"); pstmt.setInt(1, 2000); pstmt.setString(2, "Milo Mumford"); pstmt.addBatch(); pstmt.setInt(1, 3000); pstmt.setString(2, "Sulu Simpson"); pstmt.addBatch(); ...
At this point, two operations are in the batch.
Because a batch is associated with a single prepared statement object, you can batch only repeated runs of a single prepared statement, as in this example.
To process the current batch of operations, use the executeBatch
method of the statement object. This method is specified in the standard Statement
interface, which is extended by the standard PreparedStatement
and CallableStatement
Following is an example that repeats the prepared statement addBatch
calls shown previously and then processes the batch:
... PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees VALUES(?, ?)"); pstmt.setInt(1, 2000); pstmt.setString(2, "Milo Mumford"); pstmt.addBatch(); pstmt.setInt(1, 3000); pstmt.setString(2, "Sulu Simpson"); pstmt.addBatch(); int[] updateCounts = pstmt.executeBatch(); ...
Starting from Oracle Database 11g Release 1 (11.1), the executeBatch
method has been improved so that when an error occurs in the middle of the batch execution, the BatchUpdateExecution
exception that is thrown contains the position of the error in the batch. The BatchUpdateExecution.getUpdateCounts
method returns an array of int
containing the update counts for the updates that were executed successfully before this error occurred. So if an error occurs in the 5th element of the batch, then the size of the array returned is 4 and each value is Statement.SUCCESS_NO_INFO.
After you process the batch, you must still commit the changes, presuming auto-commit is disabled as recommended.
Calling commit
, commits nonbatched operations and batched operations for statement batches that have been processed, but for the Oracle implementation of standard batching, has no effect on pending statement batches that have not been processed.
To clear the current batch of operations instead of processing it, use the clearBatch
method of the statement object. This method is specified in the standard Statement
interface, which is extended by the standard PreparedStatement
and CallableStatement
Keep the following things in mind:
When a batch is processed, operations are performed in the order in which they were batched.
After calling addBatch
, you must call either executeBatch
or clearBatch
before a call to executeUpdate
, otherwise there will be a SQL exception.
A clearBatch
or executeBatch
call resets the statement batch to empty.
The statement batch is not reset to empty if the connection receives a ROLLBACK
request. You must explicitly call clearBatch
to reset it.
If you are using Oracle update batching in Oracle Database 11g, then you do not have to clear your batches explicitly in the code after a rollback. However, it is OK to invoke clearBatch
method after a rollback.
If you are using Oracle update batching in an earlier release, then you have to invoke clearBatch
method to clear your batches explicitly after a rollback.
Invoking clearBatch
method after a rollback works for all releases.
An executeBatch
call closes the current result set of the statement object, if one exists.
Nothing is returned by the clearBatch
Following is an example that repeats the prepared statement addBatch
calls shown previously but then clears the batch under certain circumstances:
PreparedStatement pstmt =
conn.prepareStatement("INSERT INTO employees VALUES(?, ?)");
pstmt.setInt(1, 2000);
pstmt.setString(2, "Milo Mumford");
pstmt.setInt(1, 3000);
pstmt.setString(2, "Sulu Simpson");
if (...condition...)
int[] updateCounts = pstmt.executeBatch();
If a statement batch is processed successfully, then the integer array, or update counts array, returned by the statement executeBatch
call will always have one element for each operation in the batch. In the Oracle implementation of standard update batching, the values of the array elements are as follows:
For a prepared statement batch, it is not possible to know the number of rows affected in the database by each individual statement in the batch. Therefore, all array elements have a value of -2
. According to the JDBC 2.0 specification, a value of -2
indicates that the operation was successful but the number of rows affected is unknown.
For a generic statement batch, the array contains the actual update counts indicating the number of rows affected by each operation. The actual update counts can be provided only in the case of generic statements in the Oracle implementation of standard batching.
For a callable statement batch, the server always returns the value 1
as the update count, irrespective of the number rows affected by each operation.
In your code, upon successful processing of a batch, you should be prepared to handle either -2
, 1
, or true update counts in the array elements. For a successful batch processing, the array contains either all -2
, 1, or all positive integers.
Example 23-2 illustrates the use of standard update batching.
Example 23-2 Standard Update Batching
This example combines the sample fragments in the previous sections, accomplishing the following steps:
Disabling auto-commit mode, which you should always do when using either update batching model
Creating a prepared statement object
Adding operations to the batch associated with the prepared statement object
Processing the batch
Committing the operations from the batch
conn.setAutoCommit(false); PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees VALUES(?, ?)"); pstmt.setInt(1, 2000); pstmt.setString(2, "Milo Mumford"); pstmt.addBatch(); pstmt.setInt(1, 3000); pstmt.setString(2, "Sulu Simpson"); pstmt.addBatch(); int[] updateCounts = pstmt.executeBatch(); conn.commit(); pstmt.close(); ...
You can process the update counts array to determine if the batch processed successfully.
If any one of the batched operations fails to complete successfully or attempts to return a result set during an executeBatch
call, then the processing stops and a java.sql.BatchUpdateException
is generated.
After a batch exception, the update counts array can be retrieved using the getUpdateCounts
method of the BatchUpdateException
object. This returns an int
array of update counts, just as the executeBatch
method does. In the Oracle implementation of standard update batching, contents of the update counts array are as follows, after a batch is processed:
For a prepared statement batch, it is not possible to know which operation failed. The array has one element for each operation in the batch, and each element has a value of -3
. According to the JDBC 2.0 specification, a value of -3
indicates that an operation did not complete successfully. In this case, it was presumably just one operation that actually failed, but because the JDBC driver does not know which operation that was, it labels all the batched operations as failures.
You should always perform a ROLLBACK
operation in this situation.
For a generic statement batch or callable statement batch, the update counts array is only a partial array containing the actual update counts up to the point of the error. The actual update counts can be provided because Oracle JDBC cannot use true batching for generic and callable statements in the Oracle implementation of standard update batching.
For example, if there were 20 operations in the batch, the first 13 succeeded, and the 14th generated an exception, then the update counts array will have 13 elements, containing actual update counts of the successful operations.
You can either commit or roll back the successful operations in this situation, as you prefer.
In your code, upon failed processing of a batch, you should be prepared to handle either -3
or true update counts in the array elements when an exception occurs. For a failed batch processing, you will have either a full array of -3
or a partial array of positive integers.
You cannot call executeUpdate
for regular, nonbatched processing of an operation if the statement object has a pending batch of operations.
However, you can intermix batched operations and nonbatched operations in a single statement object if you process nonbatched operations either prior to adding any operations to the statement batch or after processing the batch. Essentially, you can call executeUpdate
for a statement object only when its update batch is empty. If the batch is non-empty, then an exception will be generated.
For example, it is valid to have a sequence, such as the following:
... PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees VALUES(?, ?)"); pstmt.setInt(1, 2000); pstmt.setString(2, "Milo Mumford"); int scount = pstmt.executeUpdate(); // OK; no operations in pstmt batch pstmt.setInt(1, 3000); pstmt.setString(2, "Sulu Simpson"); pstmt.addBatch(); // Now start a batch pstmt.setInt(1, 4000); pstmt.setString(2, "Stan Leland"); pstmt.addBatch(); int[] bcounts = pstmt.executeBatch(); pstmt.setInt(1, 5000); pstmt.setString(2, "Amy Feiner"); int scount = pstmt.executeUpdate(); // OK; pstmt batch was executed ...
Intermixing nonbatched operations on one statement object and batched operations on another statement object within your code is permissible. Different statement objects are independent of each other with regard to update batching operations. A COMMIT
request will affect all nonbatched operations and all successful operations in processed batches, but will not affect any pending batches.
Premature batch flush happens due to a change in cached metadata. Cached metadata can be changed due to various reasons, such as the following:
The initial bind was null and the following bind is not null.
A scalar type is initially bound as string and then bound as scalar type or the reverse.
The premature batch flush count is summed to the return value of the next executeUpdate
or sendBatch
The old functionality lost all these batch flush values which can be obtained now. To switch back to the old functionality, you can set the AccumulateBatchResult
property to false
, as follows:
java.util.Properties info = new java.util.Properties(); info.setProperty("user", "SCOTT"); info.setProperty("passwd", "TIGER"); // other properties ... // property: batch flush type info.setProperty("AccumulateBatchResult", "false"); OracleDataSource ods = new OracleDataSource(); ods.setConnectionProperties(info); ods.setURL("jdbc:oracle:oci:@""); Connection conn = ods.getConnection();
property is set to true
by default.Example 23-3 illustrates premature batch flushing.
Example 23-3 Premature Batch Flushing
((OraclePreparedStatement)pstmt).setExecuteBatch (2); pstmt.setNull (1, OracleTypes.NUMBER); pstmt.setString (2, "test11"); int count = pstmt.executeUpdate (); // returns 0 /* * Premature batch flush happens here. */ pstmt.setInt (1, 22); pstmt.setString (2, "test22"); int count = pstmt.executeUpdate (); // returns 0 pstmt.setInt (1, 33); pstmt.setString (2, "test33"); /* * returns 3 with the new batching scheme where as, * returns 2 with the old batching scheme. */ int count = pstmt.executeUpdate ();
In addition to update batching, Oracle JDBC drivers support the following extensions that improve performance by reducing round-trips to the database:
This reduces round-trips to the database by fetching multiple rows of data each time data is fetched. The extra data is stored in client-side buffers for later access by the client. The number of rows to prefetch can be set as desired.
This avoids an inefficiency in the standard JDBC protocol for performing and returning the results of queries.
Suppressing database metadata TABLE_REMARKS
This avoids an expensive outer join operation.
Oracle provides several extensions to connection properties objects to support these performance extensions. These extensions enable you to set the remarksReporting
flag and default values for row prefetching and update batching.
This section covers the following topics:
For the JDBC drivers prior to Oracle Database 11g Release 2 (11.2) JDBC drivers, if you want to retrieve LOB
data in one round trip, then you have to fetch the data as VARCHAR2
type, that is, you have to use OracleTypes.VARCHAR
or OracleTypes.LONGVARCHAR
with the JDBC defineColumnType
method. The limitation of this approach is that when LOB
data is fetched as CHAR
type, the locator cannot be fetched along with the data. So, if the application wants to get the LOB
data at a later point of time, or if the application wants to perform other LOB
operations, then one more round trip is required to get the LOB
locator, as LOB
locator is not available to the application.
Array operations onLOB
locators are not supported in the JDBC APIs.For Oracle Database 11g Release 2 (11.2) JDBC drivers, the number of round trips is reduced by prefetching frequently used metadata, such as the LOB
length and the chunk size as well as the beginning of the LOB
data along with the locator during regular fetch operations. For small LOB
s, the data may be totally prefetched in one single round trip, that is, the select
parse, execution, and fetch occurs in one round trip, and performance is improved greatly. For large LOB
s that are larger than 5 times the prefetch size, the performance improvement is not very significant as only the round trip for retrieving the chunk size is not needed.
defaultLobPrefetchSize Connection Property
Starting from Oracle Database 11g Release 2 (11.2), there is a new connection property oracle.jdbc.defaultLobPrefetchSize
that can be used to set the default LOB
prefetch size for the connection. This connection property is defined as the following constant: OracleConnection.CONNECTION_PROPERTY_DEFAULT_LOB_PREFETCH_SIZE
. The value of this property is used as the default LOB
prefetch size for the current connection. The default value of this connection property is -1. If you want to change the default value at the statement level, then use the setLobPrefetchSize
method defined in oracle.jdbc.OracleStatement
interface. You can change the default value to:
-1 to disable LOB
prefetch for the current connection
0 to enable LOB
prefetch for metadata only
Any value greater than 0 to specify the number of bytes for BLOB
s and the number of characters for CLOB
s to be prefetched along with the locator during fetch operations
Use getLobPrefetchSize
method defined in oracle.jdbc.OracleStatement
interface to retrieve the LOB
prefetch size.
You can also set the value of LOB
prefetch size at the column level by using the defineColumnType
method. The column-level value overrides any value that is set at the connection or statement level.
See Also:
The JavaDoc for more informationNote:
prefetch is not disabled at the connection level or statement level, it cannot be disabled at the column level.There is no maximum prefetch setting. The default value is 10. Larger or smaller values may be appropriate depending on the number of rows and columns expected from the query. You can set the default connection row-prefetch value using a Properties
When a statement object is created, it receives the default row-prefetch setting from the associated connection. Subsequent changes to the default connection row-prefetch setting will have no effect on the statement row-prefetch setting.
If a column of a result set is of data type LONG
or LOB
s returned through the data interface, that is, the streaming types, then JDBC changes the statement row-prefetch setting to 1, even if you never actually read a value of either of these types.
Setting the prefetch size can affect the performance of an application. Increasing the prefetch size will reduce the number of round-trips required to get all the data, but will increase memory usage. This will depend on the number and size of the columns in the query and the number of rows expected to be returned. It will also depend on the memory and CPU loading of the JDBC client machine. The optimum for a standalone client application will be different from a heavily loaded application server. The speed and latency of the network connection should also be considered.
Starting from Oracle Database 11g Release 1 (11.1), the Thin driver can fetch the firstprefetch_size
number of rows from the server in the very first roundtrip. This saves one roundtrip in SELECT statements.If you are migrating an application from earlier releases of Oracle JDBC drivers to 10g Release 1 (10.1) or later releases of Oracle JDBC drivers, then you should revisit the optimizations that you had done earlier, because the memory usage and performance characteristics may have changed substantially.
A common situation that you may encounter is, say, you have a query that selects a unique key. The query will return only zero or one row. Setting the prefetch size to 1 will decrease memory and CPU usage and cannot increase round-trips. However, you must be careful to avoid the error of requesting an extra fetch by writing while(rs.next())
instead of if(rs.next())
If you are using the JDBC Thin driver, then use the useFetchSizeWithLongColumn
connection property, because it will perform PARSE
, and FETCH
in a single round-trip.
Tuning of the prefetch size should be done along with tuning of memory management in your JVM under realistic loads of the actual application.
Do not mix the JDBC 2.0 fetch size application programming interface (API) and the Oracle row-prefetching API in your application. You can use one or the other, but not both.
Be aware that setting the Oracle fetch size value can affect not only queries, but also explicitly refetching rows in a result set through the result set refreshRow
method, which is relevant for scroll-sensitive/read-only, scroll-sensitive/updatable, and scroll-insensitive/updatable result sets, and the window size of a scroll-sensitive result set, affecting how often automatic refetches are performed. However, the Oracle fetch size value will be overridden by any setting of the fetch size.
See Also:
"Supported Connection Properties"The implementation of defineColumnType
changed significantly since Oracle Database 10g. Previously, defineColumnType
was used both as a performance optimization and to force data type conversion. In previous releases, all of the drivers benefited from calls to defineColumnType
. Starting from Oracle Database 10g, the JDBC Thin driver no longer needs the information provided. The JDBC Thin driver achieves maximum performance without calls to defineColumnType
. The JDBC Oracle Call Interface (OCI) and server-side internal drivers still get better performance when the application uses defineColumnType
If your code is used with both the JDBC Thin and OCI drivers, you can disable the defineColumnType
method when using the Thin driver by setting the connection property disableDefineColumnType
to true
. Doing this makes defineColumnType
have no effect. Do not set this connection property to true
when using the JDBC OCI or server-side internal drivers.
You can also use defineColumnType
to control how much memory the client-side allocates or to limit the size of variable-length data.
Follow these general steps to define column types for a query:
If necessary, cast your statement object to OracleStatement
, OraclePreparedStatement
, or OracleCallableStatement
, as applicable.
If necessary, use the clearDefines
method of your Statement
object to clear any previous column definitions for this Statement
On each column, call the defineColumnType
method of your Statement
object, passing it these parameters:
Column index (integer)
Type code (integer)
Use the static
constants of the java.sql.Types
class or oracle.jdbc.OracleTypes
class, such as Types.INTEGER
, Types.FLOAT
, Types.VARCHAR
, OracleTypes.VARCHAR
, and OracleTypes.ROWID
. Type codes for standard types are identical in these two classes.
Type name (string)
For structured objects, object references, and arrays, you must also specify the type name. For example, Employee
, EmployeeRef
, or EmployeeArray
Maximum field size (integer)
Optionally specify a maximum data length for this column.
You cannot specify a maximum field size parameter if you are defining the column type for a structured object, object reference, or array. If you try to include this parameter, it will be ignored.
Form of use (short)
Optionally specify a form of use for the column. This can be OraclePreparedStatement.FORM_CHAR
to use the database character set or OraclePreparedStatement.FORM_NCHAR
to use the national character set. If this parameter is omitted, the default is FORM_CHAR
For example, assuming stmt
is an Oracle statement, use:
stmt.defineColumnType(column_index, typeCode);
If the column is VARCHAR
or equivalent and you know the length limit:
stmt.defineColumnType(column_index, typeCode, max_size);
For an NVARCHAR
column where the original maximum length is desired and conversion to the database character set is requested:
stmt.defineColumnType(column_index, typeCode, 0, OraclePreparedStatement.FORM_CHAR );
For structured object, object reference, and array columns:
stmt.defineColumnType(column_index, typeCode, typeName);
Set a maximum field size if you do not want to receive the full default length of the data. Calling the setMaxFieldSize
method of the standard JDBC Statement
class sets a restriction on the amount of data returned. Specifically, the size of the data returned will be the minimum of the following:
The maximum field size set in defineColumnType
The maximum field size set in setMaxFieldSize
The natural maximum size of the data type
After you complete these steps, use the executeQuery
method of the statement to perform the query.
It is no longer necessary to specify a data type for each column of the expected result set.Example 23-4 illustrates the use of this feature. It assumes you have imported the oracle.jdbc.*
Example 23-4 Defining Column Types
OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:@localhost:1502:orcl"); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); Statement stmt = conn.createStatement(); // Allocate only 2 chars for this column (truncation will happen) ((OracleStatement)stmt).defineColumnType(1, Types.VARCHAR, 2); ResultSet rset = stmt.executeQuery("select ename from emp"); while (rset.next() ) System.out.println(rset.getString(1)); stmt.close();
As this example shows, you must cast the Statement
object, stmt
, to OracleStatement
in the invocation of the defineColumnType
method. The createStatement
method of the connection returns an object of type java.sql.Statement
, which does not have the defineColumnType
and clearDefines
methods. These methods are provided only in the OracleStatement
The define-extensions use JDBC types to specify the desired types. The allowed define types for columns depend on the internal Oracle type of the column.
All columns can be defined to their natural JDBC types. In most cases, they can be defined to the Types.CHAR
or Types.VARCHAR
type code.
Table 23-1 lists the valid column definition arguments you can use in the defineColumnType
Table 23-1 Valid Column Type Specifications
If the column has Oracle SQL type: | You can use defineColumnType to define it as: |
It is always valid to use defineColumnType
with the original data type of the column.
The getColumns
, getProcedureColumns
, getProcedures
, and getTables
methods of the database metadata classes are slow if they must report TABLE_REMARKS
columns, because this necessitates an expensive outer join. For this reason, the JDBC driver does not report TABLE_REMARKS
columns by default.
You can enable TABLE_REMARKS
reporting by passing a true
argument to the setRemarksReporting
method of an OracleConnection
Equivalently, instead of calling setRemarksReporting
, you can set the remarksReporting
Java property if you use a Java Properties
object in establishing the connection.
If you are using a standard java.sql.Connection
object, you must cast it to OracleConnection
to use setRemarksReporting
Example 23-5 illustrates how to enable TABLE_REMARKS
Example 23-5 TABLE_REMARKS Reporting
Assuming conn
is the name of your standard Connection
object, the following statement enables TABLE_REMARKS
( (oracle.jdbc.OracleConnection)conn ).setRemarksReporting(true);
By default, the getColumns
method does not retrieve information about the columns if a synonym is specified. To enable the retrieval of information if a synonym is specified, you must call the setIncludeSynonyms
method on the connection as follows:
( (oracle.jdbc.driver.OracleConnection)conn ).setIncludeSynonyms(true)
This will cause all subsequent getColumns
method calls on the connection to include synonyms. This is similar to setRemarksReporting
. Alternatively, you can set the includeSynonyms
connection property. This is similar to the remarksReporting
connection property.
However, bear in mind that if includeSynonyms
is true
, then the name of the object returned in the table_name
column will be the synonym name, if a synonym exists. This is true even if you pass the table name to getColumns
Considerations for getProcedures and getProcedureColumns Methods
According to JDBC versions 1.1 and 1.2, the methods getProcedures
and getProcedureColumns
treat the catalog
, schemaPattern
, columnNamePattern
, and procedureNamePattern
parameters in the same way. In the Oracle definition of these methods, the parameters are treated differently:
Oracle does not have multiple catalogs, but it does have packages. Consequently, the catalog
parameter is treated as the package name. This applies both on input, which is the catalog
parameter, and the output, which is the catalog
column in the returned ResultSet
. On input, the construct "
, which is an empty string, retrieves procedures and arguments without a package, that is, standalone objects. A null
value means to drop from the selection criteria, that is, return information about both standalone and packaged objects. That is, it has the same effect as passing in the percent sign (%
). Otherwise, the catalog
parameter should be a package name pattern, with SQL wild cards, if desired.
All objects within Oracle database must have a schema, so it does not make sense to return information for those objects without one. Thus, the construct "
, which is an empty string, is interpreted on input to mean the objects in the current schema, that is, the one to which you are currently connected. To be consistent with the behavior of the catalog
parameter, null
is interpreted to drop the schema from the selection criteria. That is, it has the same effect as passing in %
. It can also be used as a pattern with SQL wild cards.
and columnNamePattern
The empty string (" ") does not make sense for either parameter, because all procedures and arguments must have names. Thus, the construct "
will raise an exception. To be consistent with the behavior of other parameters, null
has the same effect as passing in percent sign (%


text:
Toggle navigation
Friends & Family
Estée Lauder
Your Choice: 4 Free Samples with purchase. Plus, Free Shipping.
Email sent: Aug 6, 2012 7:33 am
Questions? Comments?
to your address book.
If you'd like to contact esteelauder.com with a question, comment or concern, please
click here
to visit our Contact Us page. For the most efficient customer service experience, please do not reply to this email.
You are receiving this promotional email because you subscribed to hear from us regarding products, services and events. To customize your email preferences, update your email address or unsubscribe, please
click here
to visit our Email Preference Center.
Estée Lauder Online
A division of Estée Lauder Inc.
767 Fifth Ave.
New York, NY 10153
*Quantities are limited and all offers are subject to availability while supplies last. Only one sample offer may be applied to each order; sample offers may not be combined. To ensure best availability, there is a limit of one to a customer. Offer available to U.S. residents only.
All "Free Shipping" offers are for STANDARD SHIPPING only, unless otherwise specified
. Applicable purchase amount does not include shipping, handling or sales tax charges; items noted as not eligible; or items that are not in stock at the time of purchase. Please note expiration dates where applicable. Offers expire at 11:59 PM Eastern Time on the stated expiration date, unless noted. Offers cannot be applied to previously placed orders. We reserve the right to cancel any order due to unauthorized, altered or ineligible use of offer and to modify or cancel any promotion due to system error or unforeseen problems. We reserve the right to substitute any free item offered with an item of equal or greater value. Ongoing offers are subject to change without notice. Other restrictions may apply.
Other emails from Estée Lauder
Estée Lauder
Mar 30, 2017
Prime Time: New Custom Skin Finishes
Estée Lauder
Mar 29, 2017
Rosé All Day
Estée Lauder
Mar 28, 2017
Why a Serum?
Estée Lauder
Mar 27, 2017
Twice as Nice: Double the Wear, Double the Points.
Estée Lauder
Mar 26, 2017
Ends Tonight: March Matte-ness. Free New Best Sellers, with your purchase.
Estée Lauder
Mar 25, 2017
Social Inspiration: Beauty Goals. Estée Stories.
Get just one daily email with
all of your favorite brands.
E-mail Address
Login with Facebook


text:
June 7
What three goals would you set for your life if you knew that you could achieve them? Would any of them be spiritual in nature? The apostle Paul was one of the most goal-oriented people in the Bible, yet he understood which pursuits were the most important. His chief ambition was to know Christ, His resurrection power, and the fellowship of His suffering (v. 10).
We'd all do well to adopt these goals, but they sound so broad. How do we put them into practice? First, it's important to comprehend that a goal is a purpose or direction toward which we work. This concept is fairly easy to understand when we're talking about specific objectives like going to bed earlier or losing ten pounds, but what steps would you need to take in order to achieve spiritual goals like Paul's?
Success requires choosing steps that are specific, reasonable, and measurable. For example, if you want to know Christ more intimately, you might commit to spending 30 minutes each day praying and reading His Word. After developing your plan and the steps to accomplish it, put your desire into action. If you don't take the necessary steps, it will simply remain a wish. No one develops intimacy with Christ through good intentions; it takes commitment, diligence, and perseverance.
If you feel as if your faith is lacking vitality, it may be that you've become spiritually lazy. No one intends to slip into complacency. But unless you set some specific goals and work to achieve them, you'll drift through life and miss the greatest accomplishment of all--learning to know Christ intimately.
For more biblical teaching and resources from Dr. Charles Stanley, please visit www.intouch.org.


text:
Just in from the UK
http://i61.tinypic.com/2zz3tdj.jpg http://i61.tinypic.com/11ifgp2.jpg So long to the ugly chain through the saddle and seatstay! |
1 Attachment(s)
So excited. "Stoked" as the kids say.
"66cm" nearly nos, claimed to be a 1993. No serials anywhere and sparkle black paint never appeared in the catalog. A bit of a mystery. Paint and decals aged enough to look original. Supposedly a wall hanger since 1998. https://lh4.googleusercontent.com/-X...221_111252.jpg https://lh5.googleusercontent.com/-D...221_111211.jpg |
I love Chris Cing.
One Campagnolo Centaur front derailleur, to replace the old Mirage that gave out after about 8,000 miles. For use on my winter bike.
Two Michelin Pro 4 Service Course tires (180 grams each, claimed) to be mounted as event tires, for my summer bike. Two Michelin AirComp tubes. See directly above. These join other recent purchases, including some more titanium bits (fasteners for clamping Ergo shifters, plus the fixing bolt for joining the two halves of an Ultratorque spindle), and some nice colored cable end caps, in gold and black. |
3 Attachment(s)
Ditched my Eggbeaters for clips/straps the other week, decided I liked it enough to invest in a good set of pedals and clips/straps.
Went with MKS Urban platforms with MKS medium clips with leather guards. I am definitely going to darken the leather to match the rest of the bike, but I am LOVING this system. 10x easier to get into, even at speed. The pedals: http://bikeforums.net/attachment.php...hmentid=365504 http://bikeforums.net/attachment.php...hmentid=365505 And the current setup on my fixed nouveau-retrogrouch commuter build: http://bikeforums.net/attachment.php...hmentid=365506 |
Gen. 3.0 cdale serial numbers were shallowly dimpled to the BB shell instead of being engraved/ milled in these days and could easily be filled over with a thicker coat of paint. The serial number will take this format otherwise: http://www.vintagecannondale.com/can...umber_1993.jpg There's also another line of dimpled numbers on the NDS chainstay, but larger. Quote:
It looks legit to me nonetheless. |
I bought a bike to build a bike so I can bike.
2 Attachment(s)
Just bought a new bike last week. I got a Trek 8.2 Dual Sport and I love it. I was riding a Huffy bike that I bought at Target 25 or so years ago. THe new bike make a world of difference. I now fill like I have a 'grownup' bike.
http://bikeforums.net/attachment.php...hmentid=365740 I purchased a new helmet to go with the bike. http://bikeforums.net/attachment.php...hmentid=365741 |
Duomatic wheelset, take-off set from Leader Duomatic via Retrogression/Scrod.
Destined for a vintage Schwinn Super Le Tour frame kicking around in the basement... |
Old hard case wheel carrier. Circa late 70s early 80s? It will be nice for me as I travel by train a lot and I can take a bike with me pretty easy now. Small box for the frame and carry the wheels with me.
OH ok.
cool. |
cuz i BROKE MY SECOND SRAM FORCE CRANK ARM. they warranted the first one, and this broke the exact same (pedal collet becomes loose) done with sram. FU SRAM this is for my bastard bike anyway. might as well mix and match to such an extent to make every single bike shop employee cringe so hard, they become the opposite sex. https://24.media.tumblr.com/452ab7cf...6wyqo1_500.gif |
700x28 Serfas Seca Tire, a 90mm Easton EA50 stem for the surly.
A PDW Excalibur fender for the Nature Boy. No more rooster tailing through the muddy puddles. Plus another Bird Cage and Podium Big Chill for the longer excursions along the river.
3T Evol 100mm Stem
http://i1206.photobucket.com/albums/...pspwbhwzik.jpg also have a Brooks Cambium being delivered tomorrow |
Another 700x28mm Serfas Seca. Going to run 28's this year.
All times are GMT -6. The time now is 12:34 PM. |


text:
more useful options | |
PerlMonks |
Re: Re: (jcwren) Re: (2): Best part of Thanksgivingby Anonymous Monk |
on Nov 26, 2000 at 01:07 UTC ( #43325=note: print w/replies, xml ) | Need Help?? |
> Language should be English-only worldwide. It's much easier that way
So much culture is embedded in language. You would lose that for the sake of convenience?
In Section
Past Polls


text:
John McWethy
John Fleetwood McWethy (February 28, 1947 – February 6, 2008) was an American journalist.
McWethy was born in Aurora, Illinois and graduated with a Bachelor of Science degree in 1969 from DePauw University, where he was a member of the Sigma Chi fraternity. In 1970, he graduated from the Columbia University Graduate School of Journalism. McWethy was a 1965 graduate of Lyons Township High School in La Grange, Illinois. In 1993, he was inducted into the high school's Hall of Fame.[1]
McWethy began his career with U.S. News & World Report, starting as a science editor in 1972, before becoming the magazine's White House correspondent in 1977.
McWethy joined ABC News in 1979. He was the network's National Security Correspondent from 1985 until his retirement in 2003, and was in The Pentagon when it was struck by hijacked American Airlines Flight 77 during the September 11 attacks.
McWethy received five Emmy Awards, the Alfred I. duPont-Columbia University Award, and an Overseas Press Club award in 1987.[2] He received an honorary doctorate degree from his alma mater, DePauw in 2003.
McWethy continued to serve as a Special Correspondent for ABC News until 2006, and was a Senior Advisor to the United States Army Command and General Staff College. On 11 August 2004, he moderated the first "News and Terrorism: Communicating in a Crisis" workshop, a joint program by the National Academy of Engineering, the Radio-Television News Directors Foundation, and the U.S. Department of Homeland Security.[3]
McWethy died in a skiing accident while at Keystone Resort. Witnesses reported he missed a turn and struck a tree, suffering blunt force trauma to his chest.[4][5]
John McWethy is survived by a wife and two adult children.
- ^ John McWethy, retired ABC News correspondent, killed in skiing accident - Arts and Culture, Cook County, Columbia University - chicagotribune.com
- ^ 48th OPC Awards from The New York Times, 1987.
- ^ News and Terrorism: Chicago Workshop
- ^ 9NEWS.com | Colorado's Online News Leader | Former TV reporter killed in skiing accident
- ^ ABC News: Ex-ABC Newsman John McWethy Dies


text:
客室 1
客室 2
客室 3
客室 4
客室 5
Demonstrating its commitment to protect the environment and mitigate climate change, Shangri-La Hotel, Baotou will participate for the fourth consecutive year in Earth Hour, a global Worldwide Fund for Nature (WWF) climate change initiative.
On 23 March 2013, between 8:30 and 9:30 p.m., Shangri-La Hotel, Baotou will turn off its lights in most back-of-the-house areas and dim the lights in public areas, restaurants and the hotel exterior. Guests will be encouraged to participate by turning off the lights in their guestrooms, using linen napkins instead of paper napkins, and taking leftover food home to reduce food wastage.
Participating in Earth Hour is only one small part of Shangri-La Hotel, Baotou's environmental protection efforts. The hotel has implemented Green programmes to identify ways to reduce wastage, eradicate practices that damage the environment and generally promote environmental awareness. Examples of these practices include using energy-saving light bulbs and biodegradable cleaning materials, water restrictors and sewage treatment facilities to prevent water pollution.
"As an environmentally conscious and socially responsible company, it is only fitting that Shangri-La Hotel, Baotou participates in Earth Hour to help raise awareness for climate change with our employees and guests," said Steven Zhang, general manager of Shangri‑La Hotel, Baotou.
ジョアンナ・リー コミュニケーション・マネジャー
(86 472) 599 8350
66Min Zu East Road, Qingshan District, Baotou City 014030 Inner Mongolia, China


text:
Sarah Palin meets Billy Graham
|PIC1|Sarah Palin met evangelist Billy Graham for dinner at his home on Montreat, North Carolina, on Sunday.
The two were joined by Franklin Graham, who had extended the invitation to Palin last winter after the two delivered aid together in Alaska, Anne Graham Lotz, and Palin's parents, Chuck and Sally Heath, her aunt Katie Johnson, daughter Piper, and son Trig.
During their meeting, the former Alaska governor and 2008 Republican vice presidential nominee spoke of her spiritual journey and her life in Alaska. Meanwhile, the famed evangelist, who has counselled countless presidents and politicians, shared his memories of preaching in Anchorage, Alabama, in 1984.
"It was an honour having Governor Palin and her family in our home this evening," said Billy Graham in a statement. "I, like many people, have been impressed with her strong commitment to her faith, to family and love of country."
Franklin Graham told The Charlotte Observer that his father has followed Palin's career and "likes her strong stand on faith".
"Daddy feels God was using her to wake America up," Graham said.
Palin also felt privileged to meet Billy Graham, calling it "a once-in-a-lifetime honour".
The elder Graham signed Bibles for all of Palin's family members present for the dinner and signed two for her – one small travel-size Bible and a large New King James version, according to the Observer.
They also prayed together.
"Life in the spotlight is not easy and I pray that whatever lies ahead for this family that their faith in God and His Son, Jesus Christ, would remain strong and that God would put a hedge or protection around her and all those she holds dear," Graham said.
This was the first time Palin and Billy Graham met.
In February, then Alaska Governor Palin had teamed up with Franklin Graham and the humanitarian group he heads, Samaritan's Purse, to deliver 44,000 pounds of food to families along the Yukon River who were hit by an unusually harsh winter.
Palin's stop in Montreat was en route to the next city on her book tour. She is scheduled to stop at Fort Bragg in eastern North Carolina on Monday to promote her memoir, Going Rogue: An American Life.


text:
RNC on Obama's interviews: "This is not a parody"
posted at 4:01 pm on August 17, 2012 by Erika Johnsen
Heh. Because it's Friday, and it's funny — on air yesterday with Obama campaign press secretary Ben LaBolt, and again today with DNC Chairwoman Debbie Wasserman Schultz, MSNBC hostess Andrea Mitchell wondered aloud about the growing sentiment that President Obama doesn't seem to make himself much available for hard-hitting press coverage.
Both LaBolt and DWS maintained that the President does indeed answer difficult questions on the regular, but as the RNC points out with this latest web vid… Mr. Obama does seem to have a penchant for setting himself up to field softballs.
President Obama just wrapped up another hard-hitting interview where he discussed America's top concerns, like whether our president prefers green or red chiles, his take on "Call Me Maybe," and what superpower he wished he had. It's been over eight weeks since President Obama took a question from the White House Press Corps.
Related Posts:
Breaking on Hot Air
Mayor De Blasio connects racist murder to Trump, 'atmosphere of hate'
Report: Andrew Napolitano thinks Trump might put him on the Supreme Court


text: Walt Disney Pictures Japan has released this new Japanese teaser trailer for Iron Man 3, opening in North American 3D and 2D theaters on May 3, 2013. Marvel Studios' Iron Man 3 pits brash-but-brilliant industrialist Tony Stark/Iron Man against an enemy whose reach knows no bounds. When Stark finds his personal world destroyed at his enemy's hands, he embarks on a harrowing quest to find those responsible. This journey, at every turn, will test his mettle. With his back against the wall, Stark is left to survive by his own devices, relying on his ingenuity and instincts to protect those closest to him. As he fights his way back, Stark discovers the answer to the question that has secretly haunted him: does the man make the suit or does the suit make the man? Starring Robert Downey Jr., Gwyneth Paltrow, Don Cheadle, Guy Pearce, Rebecca Hall, Stephanie Szostak, James Badge Dale with Jon Favreau and Ben Kingsley, Iron Man 3 is directed by Shane Black. |


text:
Testing DPDK Performance and Features with TestPMD
Learn how to build and configure the DPDK TestPMD application, and how to use it to check the performance and features of different network devices using DPDK.AMD support
Kinvey Web service
I am trying to test any Kinvey web service but not matter which one I pick it always errors out with the following:
Develop for Intel® Gateway Technology
Develop innovative commercial solutions with Intel® IoT Gateway technology and software.Journey - Basics | IoT
Learn the basics of IoT development: getting started, suggested products from Intel, and code samples.Digging Deeper | IoT Developer Journey
Get advanced guidance from Intel's experts for creating IoT prototypes, adding sensors, and connecting to the cloud.icpc HUNGS on small program
I found icpc from Intel Parallel Studio XE 2017 hungs on my Linux machine compiling my project. For some tries, I reduced my code to the following:
Alternative for ippiSSIM_32f_C1R
Function ippiSSIM_32f_C1R and others was excluded from the latest versions of IPP without any supposed alternative. Can you tell, why it was performed, what can be used instead?
(Ctrl + Insert) Hotkey Bug
I'm using Intel XDK version 3900. I noticed that whenever I use the copy hotkey (Ctrl + Insert), it decreases the file font size. Obviously, this is a bug.
Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.


text:
Title: | Aflatoxin B1 in Corn Silage |
Author: | Littlefield, L. J.; Casper, H. H.; Haggblom, P. E. |
Description: | Nineteen piles and bunk silos of corn silage were sampled in late fall of 1976 and early spring of 1977. These samples were assayed for aflatoxin Bl, a potent mycotoxin, using a newly developed procedure. No aflatoxin Bl (<5 ug/kg) was detected in any of the 270 samples of corn silage. |
Date: | 1979 |
Subject: | Silage Cattle diseases Feeds |
Permalink: | http://hdl.handle.net/10365/4925 |


text:
Non-LEO Forums >> Security Officers >> Private Armed Guards
Private Armed Guards
11 posts back to top |
Posted almost 5 years ago Why do people call Security Officers (Rent A Cops)? |
Anonymous 0 posts back to top |
| Posted almost 5 years ago I could be way off and this is really just a shot in the dark...maybe because lot's of cops work private security jobs as a second job? So they're cops that are being rented? |
546 posts back to top |
| Posted almost 5 years ago It's a pejorative term used to denigrate SGs. Unlike sworn LEOs, SGs work for a private entity and are not sworn, therefore have no power to arrest, and are bound by the rules of their company and client site. Rent-a-cop is a term used by a lot of people to insult SGs because unlike LEOs, they have no constitutional or statutory authority to do anything: all of their authority comes from the company and client by which they are employed. Most SGs I know (including me) find the term rather offensive. Most often, it's used by dirtbags to imply that SGs can't do anything, when in fact if said dirtbag is not complying with orders to leave the property the SG is charged with protecting (or obey the rules), they have every right to call PD, detain, fill out a citizens' arrest form, and ban from the property (depending on company and client rules). Means there's a mountain of paperwork to do, but it's worth it a lot of the time. |
29 posts back to top |
| Posted over 4 years ago That's about right, Gray Panther. We are not sworn officers, and people like to push our buttons. But little do they realize that we can still make them have a very bad day. In my case, half of my week is armed patrol. So my authority differs a little than that of a stationary security officer. And most people don't realize how dangerous armed security really is. |
4585 posts back to top |
| Posted over 4 years ago GrayPanther says ... Check out the PoliceLink.com Facebook page. It was established in 2008. |
129 posts back to top |
| Posted over 4 years ago A security officer (The difference between offocer and guard is the level of training at least in the company I work for) does have detention authority and can in the event of an actually witnessed felony CAN make an arrest like any other person. It just happens that a fully (yes fully and I will admit MOST aren't) trained officer has the appropriate tools for the job. I personally am qualified for handcuffs OC and baton and have to requalify every 2 years on all three not to mention CPR/First Aid. In fact the ONLY training I do not have is the actual classroom training in the State law which I actually look up on my own to keep abreast of it. Yes there are more than a few deadbeats and goldbricks in the security field they give us real officers a bad name and reputation. Then there are the companies thet refuse to allow thir officers the proper tools for the job ( a radio and flashlight are not sufficient these days) just because they don't want the expense of the training of the officers in the proper use of the tools not to mention requalifications. My company makes us pay for all of it ourselves at $60+ a class and we have to have the classes to advance in rank in the company so we actually have to buy our advancement. ARMED training is in access of $600 for the initial trining and $300 for the quarterly requalifications and no gaurentee that you can get an armed site. I really wish the LEO's on here would give the good security officers a decent break as I have has posts so put down that I almost refused to come back and wouldn't have if not for the other securoty officers on these forums. |
161 posts back to top |
| Posted over 4 years ago Racn88 says ... half of my week is armed patrol. So my authority differs a little than that of a stationary security officer. Having a weapon does not increase your authority. It does however, increase your responsibility and liability. In a world where there are Sheep and Wolves,
I am NOT a hero
Anonymous -171 posts back to top |
| Posted over 4 years ago I concur with Scjohnk.Bu55c it is usually the civilians who call private security rent-a-cops.Just on this thread I see a good report from the Sarge and others en re to private security.I was a sworn officer and Deputy Sheriff for twenty seven years and counting my time on the job I worked as private security for some nine years.I have now been in private security for over twelve years sice I retired.Therefore some twenty one years in private security.I cannot recall anybody ever refer to me as rent-a-cop. |
5106 posts back to top |
| Posted over 4 years ago ssu459. Rent a cop was a common saying years ago however, I haven't heard it for a spell. I think private security gets a bad shake however, also believe some of them bring it on themselves. I have ran into some security guards that refer to themselves as "Private Police Officers" |
29 posts back to top |
| Posted over 4 years ago Scjohnk says ... You are correct. That is what I was attempting to say. However, being that it is not in the city in which I live. In areas I am not familiar with. With no one around that i know and no radio to call for help. Just my cell phone,if I have time to get to it,which is doubtfull. And only the public to depend on to call police. I tend to be in a different mind set. Since I pretty much have to save my own behind !! If you can see where I'm coming from here. |
129 posts back to top |
| Posted over 4 years ago Oh I get called a lot of derogatory things in the line of work. When you are the one charged with telling people they can't do what they want you get seriously growled at sometimes. |
29 posts back to top |
| Posted over 4 years ago yep, always the bad guy. |
546 posts back to top |
| Posted over 4 years ago uncledennis1 says ... See, that's just stupid. Security personnel ain't LE - no way, no how. Any SG that calls him/herself that is looking for trouble. |
129 posts back to top |
| Posted over 4 years ago True, security officers (I hate the term guard, those are the absolute low end untrained ones that cause more harm than good) are not private police officers. Private police do exist however, all over the world. Here in the city I live in we have 2 groups (soon to be only one thanks to City interference in the name of revenue). |


text:
- connect to a single Cassandra database node
A registered event occurred.
will depend on the event name.
Each is also available as its own event,
with the name in lowercase.
If the event is not one of the types recognised below,
will contain the actual Protocol::CassandraCQL::Frame object.
The cluster topology has changed.
is a packed socket address.
The node's status has changed.
is a packed socket address.
A keyspace or table schema has changed.
The following named parameters may be passed to new
or configure
Authentication details to use for PasswordAuthenticator
Optional. Version of the CQL wire protocol to negotiate during connection. Defaults to 1.
Returns the connection's node ID (the string form of its IP address),
which is used as its ID in the system.peers
Connects to the Cassandra node an send the OPCODE_STARTUP
The returned Future will yield the connection itself on success.
Takes the following named arguments:
Sends a message with the given opcode and Protocol::CassandraCQL::Frame for the message body. The returned Future will yield the response opcode, frame and version number (with the RESPONSE bit masked off).
This is a low-level method; applications should instead use one of the wrapper methods below.
Sends the initial connection setup message. On success, the returned Future yields nothing.
Normally this is not required as the connect
method performs it implicitly.
Requests the list of supported options from the server node. On success, the returned Future yields a HASH reference mapping option names to ARRAY references containing valid values.
Performs a CQL query. On success, the values returned from the Future will depend on the type of query.
For USE
the type is keyspace
and $result
is a string giving the name of the new keyspace.
For CREATE
and DROP
the type is schema_change
and $result
is a 3-element ARRAY reference containing the type of change,
the keyspace and the table name.
For SELECT
the type is rows
and $result
is an instance of Protocol::CassandraCQL::Result containing the returned row data.
For other queries,
such as INSERT
and DELETE
the future returns nothing.
Any other arguments will be passed on to the underlying build_query_frame
function of Protocol::CassandraCQL::Frames.
Prepares a CQL query for later execution. On success, the returned Future yields an instance of Net::Async::CassandraCQL::Query.
Executes a previously-prepared statement,
given its ID and the binding data.
On success,
the returned Future will yield results of the same form as the query
should contain a list of encoded byte-string values.
Any other arguments will be passed on to the underlying build_execute_frame
function of Protocol::CassandraCQL::Frames.
Normally this method is not directly required - instead,
use the execute
method on the query object itself,
as this will encode the parameters correctly.
Registers the connection's interest in receiving events of the types given in the ARRAY reference.
Event names may be TOPOLOGY_CHANGE
or SCHEMA_CHANGE
On success,
the returned Future yields nothing.
If the connection is idle (has no outstanding queries), then it is closed immediately. If not, it is put into close-pending mode, where it will accept no more queries, and will close when the last pending one is complete.
Returns a future which will eventually yield the (closed) connection when it becomes closed.
This code was paid for by
Paul Evans <email@example.com>


text:
Lots of talk about defensemen recently, for obvious reasons. With Kris Letang and Zbynek Michalek joining Ben Lovejoy, Brian Strait and Boris Valabik on the shelf, the Penguins organization is currently without five of its top 11 defensemen.
That's pretty staggering if you think about it. It's a minor miracle they're able to put together a solid group of six in Pittsburgh right now, let alone another group of six in Wilkes-Barre.
The latest move saw Alexandre Picard sent down and Simon Despres called up in his place. Frankly, the swap was a little puzzling to me. I thought Picard played a pretty good game Tuesday at MSG and Despres hasn't been at his best the last five or six games. I asked John Hynes about the rationale for the move, and his explanation shed some light on the situation, I think.
"I think it's a situation to give him an opportunity to see what he looks like in the National Hockey League after being here for a while," Hynes said. "It was no more than trying to see where he's at and where the growth of his game has gone. In Pic's situation, they know what he can do. They feel confident in what he can do. That's why the decision was made."
For fans wondering what to expect out of Despres, I'll tell you this. He's most impressive with the puck on his stick in open ice. A fluid skater with top-end skill. I don't know if he's going to feel comfortable enough to try that in his NHL debut tonight, but who knows? The kid doesn't lack confidence. His D-zone work is a work in progress, like most 20-year-olds. He could get overwhelmed by power forward types. A game against Washington will be a good measuring stick for his development, I'd say.
So where does that leave WBS for two games this weekend? The D corps will look something like this: Picard-Sneep, Samuelsson-Mormina, Wild-Grant. Valabik's knee is still on the mend and he's not expected to play.
That's not a bad group, really, by AHL standards. They're not going to get abused in their own zone. The transition game won't be as sharp and the game plan will have to be a little more conservative to help out the defensive effort, so don't expect any wildly entertaining hockey the next two days, but it's not like they're going to be outgunned going into a given game.
Bye for now,


text:
Thursday – March 30, 2017
Physical Therapist Assistant
Downtown Milwaukee Campus
Work with physical therapy patients in a hospital, nursing home, rehabilitation center, school, private clinic or other healthcare setting. Under the supervision of a physical therapist, duties include implementing treatment programs according to the plan of care, teaching patients to perform exercises and daily living activities, conducting treatments using special equipment, and reporting the patient's progress.
Career Outlook: The need for physical therapist assistants is projected to grow due to increases in the geriatric population.
Career Pathway: This program features exploratory courses that count toward a credential. Work continues to develop the program into a fully embedded Career Pathway.
Program Code: 10-524-1
Start Date: January
This program does not have a waitlist.
Students are admitted through a petition process.
Learn more about the petition process
Learn more about when the petition process windows are open
A criterion considered in the petition process is verification of student residency. Students selected via the petition process are chosen based on MATC district residency, then Wisconsin nondistrict residency, followed by nonresidents, unless otherwise stated.
Special Admission Requirements: One year of high school-level algebra, biology and chemistry or physics.
Detailed Program Information
Fall 2016 – Spring 2017 Course Requirements (link)
View/Print Program Card (pdf)
Available Certifications and Licensures for School of Health Sciences Programs (pdf)
Learn about scholarship opportunities here: http://www.matc.edu/foundation/scholarships.cfm
Learn about Scholarships available for this program here: https://matc.academicworks.com
(use Search function to search for your program(s)
For more information, email firstname.lastname@example.com
<< Admissions Mainpage >>
Call the Admissions Information Office at 414-297-MATC if you have questions about MATC programs.
Register for Classes (Requires Login)