Which of the following method can be used to set the size of the buffer *?

If the addition FOR ALL ENTRIES is specified in front of the language element WHERE of the statement SELECT of a main query, the components comp of the internal table itab specified here can be used within sql_cond on the right side of comparisons of a relational operator in comparisons with a column col. The specified component comp must be compatible with the column col. The internal table itab can have a structured or an elementary row type. For an elementary row type, the pseudo component table_line must be specified for comp. The name of the host variable dbcur should be prefixed with the escape character @.

The entire logical expression sql_cond is evaluated for each individual row of the internal table itab. The results set of the SELECT statement is the union set of the results sets produced by the individual evaluations. Rows that occur more than once are removed from the results set automatically. The full content of a row is considered here.

If the internal table itab is empty, the entire WHERE condition is ignored. This means that none of the rows in the database table are skipped and are placed in the results set (once any duplicate rows are removed).

The logical expression sql_cond of the WHERE condition can comprise multiple logical expressions using AND and OR. However, if FOR ALL ENTRIES is specified, there must be at least one comparison with a column of the internal table itab that can be specified statically or dynamically.

The following restrictions apply when using the addition FOR ALL ENTRIES with other additions:

  • The addition FOR ALL ENTRIES is only possible in front of WHERE conditions in a standalone SELECT statement or in the main query after OPEN CURSOR, if no common table expressions are defined using WITH.
  • The addition FOR ALL ENTRIES cannot be used with the addition SINGLE.
  • The addition FOR ALL ENTRIES cannot be combined with UNION.
  • The addition FOR ALL ENTRIES should not be used with the addition GROUP BY. The addition GROUP BY has no effect if FOR ALL ENTRIES is used.
  • In a SELECT statement with FOR ALL ENTRIES, the addition ORDER BY can only be used with the addition PRIMARY KEY and can only be used to access a single table or view. In this case, all columns of the primary key (except for the client column in client-specific tables) must be in the SELECT list.
  • If the addition FOR ALL ENTRIES is used, no database fields of the built-in types STRING and RAWSTRING plus LCHR and LRAW should occur in the SELECT list. These data types prevent rows that occur more than once on the database system from being removed. These rows are only removed from the results set on the application server. If specified in the SELECT list, a syntax check warning is raised that can be hidden by a pragma.

The internal table itab is evaluated once for each query. Any changes made to the content of the internal table in a SELECT loop or WITH loop are ignored by the logical expression.

Notes

  • The same internal table can be specified after FOR ALL ENTRIES and after INTO. The content of the table is evaluated by FOR ALL ENTRIES and then overwritten by the INTO clause.
  • A comparison with a column of an internal table can also be performed using the WHERE condition of a subquery for the same data source.
  • With respect to rows occurring more than once in the results set, the addition FOR ALL ENTRIES has the same effect as when the addition DISTINCT is specified in the definition of the selection set. Unlike DISTINCT, the rows are not always deleted from the database system but instead are sometimes first deleted from the results set on the application server. The duplicate rows are then removed from the database system if the SELECT statement can be passed to the database system as a single SQL statement. The addition DISTINCT is supported here. If the SELECT statement needs to be distributed to multiple SQL statements before it is passed or if columns of the types STRING and RAWSTRING plus LCHR and LRAW are specified in the SELECT list, the rows are aggregated on the application server.
  • If duplicate rows are first removed from the application server, all rows specified by the WHERE condition (in some cases) are passed to an internal system table and then aggregated. The maximum size of this system table is restricted to that of normal internal tables. More specifically, the system table is always required if one of the additions PACKAGE SIZE or UP TO, OFFSET is used simultaneously. These then have no effect on the number of rows passed from the database server to the application server, but are only used when the rows are passed from the system table to the actual target area. If the maximum size of the internal system table is exceeded, a runtime error occurs.
  • The addition FOR ALL ENTRIES bypasses table buffering for tables with generic buffering if the condition after FOR ALL ENTRIES prevents a single generic area from being specified exactly.
In all other cases, table buffering is used and the addition FOR ALL ENTRIES can be a more efficient alternative to join expressions.
  • Before using an internal table itab after FOR ALL ENTRIES, always check that the internal table is not initial. In an initial internal tables, all rows are read from the database regardless of any further conditions specified after WHERE. This is not usually the required behavior.
  • If the full WHERE condition is ignored because the internal table itab is empty, the implicit WHERE condition for the current client or the client specified using USING CLIENT is not affected (if automatic client handling is switched on). This means that all data is only read from the current client. If automatic client handling is switched off using CLIENT SPECIFIED, no implicit WHERE condition exists for the client. Any WHERE condition specified explicitly for the client column is ignored with the full condition if the internal table itab is empty and the data from all clients is read.

Example

Gets all flight data for a specified departure city. The relevant airlines and flight numbers are first passed to an internal table entry_tab, which is evaluated in the WHERE condition of the subsequent SELECT statement. This selection could also be carried out in a single SELECT statement by using a join in the FROM clause. Make sure that the table entry_tab is not initial before the SELECT statement is executed using FOR ALL ENTRIES.

DATA city TYPE spfli-cityfrom VALUE 'FRANKFURT'.
cl_demo_input=>request( CHANGING field = city ).

SELECT carrid, connid
       FROM spfli
       WHERE cityfrom = @( to_upper( city ) )
       INTO TABLE @DATA(entry_tab).

IF entry_tab IS NOT INITIAL.
  SELECT carrid, connid, fldate
         FROM sflight
         FOR ALL ENTRIES IN @entry_tab
         WHERE carrid = @entry_tab-carrid AND
               connid = @entry_tab-connid
         ORDER BY PRIMARY KEY
         INTO TABLE @DATA(result_tab).
  cl_demo_output=>display( result_tab ).
ENDIF.

Example

Uses FOR ALL ENTRIES with an empty internal table. All rows of the database table are respected. The number of read rows is usually, however, smaller in the first SELECT statement than in the second statement. This is because only one column is read and hence more duplicate rows can be removed. The second SELECT statement, on the other hand, moves all rows of the database table to the results set, since their structure covers the full table key.

Which of the following method can be used to set the size of the buffer in Java?

The capacity() method of the StringBuffer class returns the current capacity of the buffer. The default capacity of the buffer is 16. If the number of character increases from its current capacity, it increases the capacity by (oldcapacity*2)+2. For example if your current capacity is 16, it will be (16*2)+2=34.

How to get the size of BufferedReader in Java?

BufferedReader Buffer Size You provide the size as a constructor parameter, like this: int bufferSize = 8 * 1024; BufferedReader bufferedReader = new BufferedReader( new FileReader("c:\\data\\input-file. txt"), bufferSize ); This example sets the internal buffer to 8 KB.

Which method can be used to set the length of the buffer within a StringBuffer object?

The setLength(int newLength) method is used to change the length of the StringBuffer Object. It sets the length of the character sequence.

Which of this method is used with BufferedReader?

The read() method of BufferedReader class in Java is used to read a single character from the given buffered reader. This read() method reads one character at a time from the buffered stream and return it as an integer value.