powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
25 сообщений из 78, страница 3 из 4
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494723
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА к чему еще-то ?А что ещё ты знаешь ?
А в каком разделе API Guide ты видел isc_database_info ? А isc_vax _integer ?
А накой писать абы шо в приличном месте ? :)
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494725
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидDimitry SibiryakovК какой версии у тебя гайд и откуда ты его взял?как это "какой" и "откуда" ?...
ОТТУДА!
Код: plaintext
24.11.1999  06:00            3 579 077 ApiGuide.pdf
Можно подумать, что есть еще что-то...Это какая-то муйня (c) kdv 1999 года, наверняка от пре-релиза ib6
Ибо у всех, кому надо, есть другая муйня от 2001 года :) Под тем же названием.
И не спрашивай, где я её взял - не знаю...
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494726
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаблоидА к чему еще-то ?А что ещё ты знаешь ?
А в каком разделе API Guide ты видел isc_database_info ? А isc_vax _integer ?
А накой писать абы шо в приличном месте ? :)ну... увидел в названии пдфника:*API* - и там, в трекере, список выбора тоже знакомые буквы содержал в одном из пунктов... я и ткнул... :-[

А чего ты про трекер так переживаешь ? Он же всё стерпит, да и Шон там начеку, особливо по мою душу...
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494727
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА чего ты про трекер так переживаешь ?Мне за тебя перед ним стыдно...
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494728
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИбо у всех, кому надо, есть другая муйня от 2001 года :) Под тем же названием.
И не спрашивай, где я её взял - не знаю...а вышли, плз, в личку, ы ? я так думаю, что пока kdv там обновит у себя, время какое-то совсем ненулевое пройдёт...
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494731
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494735
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаблоидА чего ты про трекер так переживаешь ?Мне за тебя перед ним стыдно...У мну с аглицким плохо, а точнее - беда. Поэтому пишу туда на крымско-татарском, только в латинницу перевожу. А Шон всё расставляет на свои места
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494736
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТаблоид,

http://www.ibphoenix.com/files/60ApiGuide.zip

Хотя это тоже 1999 года. А вообще если есть более свежая дока то почему она не выложена на официальном сайте FB?
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494740
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис http://www.ibphoenix.com/files/60ApiGuide.zip дык спасибо, но... там тоже самое, хит-1999:
Код: plaintext
2.11.1999  17:04            3 579 077 ApiGuide.pdf
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494747
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0xFF. я забыл что-то... или же новая java-мерялка опять врёт...
откудова могут быть в insert_only-тесте сумасшедшие фетчи: 11.4 млн против 5..15 тыс "марок", интервал замеров = 5 сек (число молотилок = 200, каждая делает в среднем 55 вставок):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
22:50:36.271 trying to gather db statistics. . .
22:50:36.271 statistics gathered, dbstat[] length=33
22:50:36.271            reads                  241; diff:                  0
22:50:36.271            writes             3614655; diff:                703
22:50:36.271            fetches        -2118357188; diff:           11476403
22:50:36.271            marks            104009415; diff:              21165

22:50:41.271 trying to gather db statistics. . .
22:50:41.271 statistics gathered, dbstat[] length=33
22:50:41.271            reads                  241; diff:                  0
22:50:41.271            writes             3615358; diff:                263
22:50:41.271            fetches        -2106880785; diff:           11549457
22:50:41.271            marks            104030580; diff:               4749

22:50:46.271 trying to gather db statistics. . .
22:50:46.271 statistics gathered, dbstat[] length=33
22:50:46.271            reads                  241; diff:                  0
22:50:46.271            writes             3615621; diff:                490
22:50:46.271            fetches        -2095331328; diff:           11565988
22:50:46.271            marks            104035329; diff:              14400

- ?
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494778
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА вообще если есть более свежая дока то почему она не выложена на
официальном сайте FB?
Потому что эта более свежая - частная собственность компании Эмбаркадеро и лежать на чужом
сайте ей впадлу. С другой стороны, с сайта самого Эмбаркадера её можно скачать без особых
проблем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494836
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидя так думаю, что пока kdv там обновит у себя
см. ниже.

ТаблоидЭто какая-то муйня (c) kdv 1999 года, наверняка от пре-релиза ib6
Ибо у всех, кому надо, есть другая муйня от 2001 года :) Под тем же названием.
И не спрашивай, где я её взял - не знаю...
муйня от 1999 является единственным вариантом доки, который раздавался невозбранно. Вся остальная дока на InterBase принадлежит дистрибутиву InterBase, который без проблем скачивается с embarcadero.com.
У меня на компе есть установленные 7.1, 7.5, 2007, 2009, XE, XE3, и во всех есть дока, но это не значит, что я имею право ее выкладывать к себе на сайт.

isc_portable_integer я вижу в доке от 7.1. От платных 6.0 или 6.5 я себе доку не ставил.

Рядом с упоминанием доки от бесплатной IB 6.0 могу разве что воткнуть на свободно лежащую доку от более свежих версий.
http://docs.embarcadero.com/products/interbase/
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494840
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, у меня там и дока по ИБ 6.5 есть. в ней уже isc_portable_integer есть.
частично раздел переделал, могу вообще доку по 6.0 слить в один файл.
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38494965
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvкстати, у меня там и дока по ИБ 6.5 есть. в ней уже isc_portable_integer есть.Нашёл, псип. Поменяй, плз, название зипа: http://www.ibase.ru/v6/ib65_docs_for_delphi.zip - там (внутри архива) на самом деле нет ничего внутри папки ib65_docs_for_delphi, зато в остальных всё пучком :-)
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38495097
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидПоменяй, плз, название зипа: http://www.ibase.ru/v6/ib65_docs_for_delphi.zip - там (внутри архива) на самом деле нет ничего внутри папки
зачем мне его менять, если он так и назывался? Это файл из апдейта Delphi 7. Каким он был, таким я его и выложил. А zip мне перепаковывать нечем, у меня винзип не куплен :-)
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38495186
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvА zip мне перепаковывать нечем, у меня винзип не куплен :-)7z
GPL и паковать в зип умеет, и глупого ограничения в виде приставки "вин" не имеет.
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38495279
Esperito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvА zip мне перепаковывать нечем, у меня винзип не куплен :-)А купленная винда XP или выше еззь? :-)
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38495299
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EsperitoА купленная винда XP или выше еззь? :-)
есть, я забыл что вин7 сама в зип может паковать. Тем не менее, архив оригинальный, менять не буду.
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38496250
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Продолжаем углублять реформы" ((С) Черномырдин ?)

Настал черёд получать счетчики, объединённых под общим названием "Database operation counts" (IR, NIR, inserts et al).
Согласно API Guide, 2001-го года, странице 56:
стр. 56 Database operation counts
Several information items are provided for determining the number of various database
operations performed by the currently attached calling program. These values are
calculated on a per-table basis .
When any of these information items is requested, InterBase returns to the result buffer:
* 1 byte specifying the item type (for example, isc_info_insert_count).
* 2 bytes telling how many bytes compose the subsequent value pairs.
* A pair of values for each table in the database on which the requested type of operation
has occurred since the database was last attached.
Each pair consists of:
* 2 bytes specifying the table ID.
* 4 bytes listing the number of operations (for example, inserts) done on that table.
To determine an actual table name from a table ID, query the system table, RDB$RELATION

я решил сразу затолкать пары {relation_id, relation_name} в мап-структуру, чтобы не заморачиваться с вытаскиванием имени таблицы по её ИДшнику. И заполняю этот мап вот так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
      Map<Integer, String> tabs = new TreeMap<Integer, String>();
      Statement stmt = c.createStatement();
      String tqry="select rdb$relation_id, trim(rdb$relation_name) from rdb$relations"; // where coalesce(rdb$system_flag,0)=0";
      ResultSet rs = stmt.executeQuery(tqry); // smallint; chhar(31)
      while(rs.next()) {
          tabs.put(rs.getInt(1), rs.getString(2));
          //System.out.println("a1 = " + rs.getString(1) + ", a2 = " + rs.getString(2));
      }    
      stmt.close();
      System.out.println("tabs.size()="+tabs.size()+"; tabs="+tabs);

И далее, получая ИДшник таблицы в первых двух байтах , лезу в мап за её именем.

Ну так вот: проблема в том, что статистика счетчиков операций показывается только по двум таблицам: RDB$RELATIONS и RDB$DATABASE . Несмотря на то, что в другом окошке интенсивно прёт селект из 100500 млн строк с других таблиц:-(
Более того, з начения счетчиков по этим двум таблицам равны всё время единице.

В нижеприведенном коде явно трабл в куске, выделенном цветом. Но понять, чего там не так, я не смог.

Хелп, плз, кто тут силён API Guid'e! (ну, а в java-коде - верю, все сильны :))

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
// compile: javac -cp .;jaybird-full-2.2.4.jar FbGatherStatistics.java
// run:     java -cp .;jaybird-full-2.2.4.jar FbGatherStatistics 1>FbGatherStatistics.log 2>FbGatherStatistics.err
import java.io.*;
import static java.lang.System.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import org.firebirdsql.gds.*;
import org.firebirdsql.pool.*;


public final class FbGatherStatistics
{
  private static enum CounterType { PERF, DBOP, DUMMY }
  
  private static BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  private static DateFormat df = new SimpleDateFormat("HH:mm:ss.SSS");
  private static final String DB_URL="192.168.0.201/3252:empty25";
  //private static final String DB_URL="192.168.0.220/3330:idx_test";
  private static final String DB_USER="sysdba";
  private static final String DB_PSWD="masterke";
  static public void main (String args[]) throws Exception
  {
    // todo: use args for: db_name, db_user, db_password, sleep_delay  
    try {

        
      org.firebirdsql.gds.GDS gdso = org.firebirdsql.gds.GDSObjectFactory.createJavaGDSImpl();
      // Factory method to create a new IscDbHandle instance specific to the implementation of this interface.
      IscDbHandle dh =  gdso.createIscDbHandle();

      DatabaseParameterBuffer dpb = gdso.createDatabaseParameterBuffer();
      dpb.addArgument(DatabaseParameterBuffer.USER, DB_USER);
      dpb.addArgument(DatabaseParameterBuffer.PASSWORD, DB_PSWD);
      dpb.addArgument(DatabaseParameterBuffer.CONNECT_TIMEOUT, 2000);

      out.println( df.format( System.currentTimeMillis() )+ " trying to attach. . .");
      gdso.iscAttachDatabase(DB_URL, dh, dpb);
      out.println( df.format( System.currentTimeMillis() )+" attached to "+DB_URL);
      //stdin.readLine();         
      
      // strange but... need 2nd attach ?! could not find 'chain' between GDS object and Connection interface :((
      out.println( df.format( System.currentTimeMillis() )+ " trying to attach2. . .");
      FBWrappingDataSource ds = new FBWrappingDataSource();
      ds.setDatabase(DB_URL);
      // ds.setLoginTimeout (10);
      java.sql.Connection c = ds.getConnection(DB_USER,  DB_PSWD);
      out.println( df.format( System.currentTimeMillis() )+" attached2 to "+DB_URL);
      //stdin.readLine();         
      

      Map<Integer, String> tabs = new TreeMap<Integer, String>();
      Statement stmt = c.createStatement();
      String tqry="select rdb$relation_id, trim(rdb$relation_name) from rdb$relations"; // where coalesce(rdb$system_flag,0)=0";
      ResultSet rs = stmt.executeQuery(tqry); // smallint; chhar(31)
      while(rs.next()) {
          tabs.put(rs.getInt(1), rs.getString(2));
          //System.out.println("a1 = " + rs.getString(1) + ", a2 = " + rs.getString(2));
      }    
      stmt.close();
      System.out.println("tabs.size()="+tabs.size()+"; tabs="+tabs);
      
      Map<Integer, StatValue> cntx = new LinkedHashMap<Integer, StatValue>();
      cntx.put( ISCConstants.isc_info_reads,   new StatValue(CounterType.PERF, "reads",7));
      cntx.put( ISCConstants.isc_info_writes,  new StatValue(CounterType.PERF, "writes",7));
      cntx.put( ISCConstants.isc_info_fetches, new StatValue(CounterType.PERF, "fetches",7));
      cntx.put( ISCConstants.isc_info_marks,   new StatValue(CounterType.PERF, "marks",7));

      // add 10.12.2013: database operations counters
      cntx.put( ISCConstants.isc_info_read_idx_count, new StatValue(CounterType.DBOP, "idxReads",8));
      cntx.put( ISCConstants.isc_info_read_seq_count, new StatValue(CounterType.DBOP, "natReads",8));
      cntx.put( ISCConstants.isc_info_insert_count,   new StatValue(CounterType.DBOP, "inserts", 8));
      cntx.put( ISCConstants.isc_info_insert_count,   new StatValue(CounterType.DBOP, "inserts", 8));
      cntx.put( ISCConstants.isc_info_update_count,   new StatValue(CounterType.DBOP, "updates", 8));
      cntx.put( ISCConstants.isc_info_delete_count,   new StatValue(CounterType.DBOP, "deletes", 8));
      cntx.put( ISCConstants.isc_info_backout_count,  new StatValue(CounterType.DBOP, "backouts",8));
      cntx.put( ISCConstants.isc_info_purge_count,    new StatValue(CounterType.DBOP, "purges",  8));
      cntx.put( ISCConstants.isc_info_expunge_count,  new StatValue(CounterType.DBOP, "expunges",8));

      cntx.put( ISCConstants.isc_info_end,     new StatValue(CounterType.DUMMY, "end"));
      
      byte[] items = new byte[ cntx.size() ];
      int ii=0, buf_total=2;
      for(Integer k : cntx.keySet()) {
         items[ii++] = k.byteValue();
         buf_total += 8;
      }
      //System.out.println(cntx);
      //System.out.println("buf_total="+buf_total);
      
      int len;
      byte item;
      short i;
      byte[] dbstat; // stores result values of counters
      int prevVal, currVal, tabsIdx;
      while(true) {
        try {  
            out.println(df.format( System.currentTimeMillis() )+" trying to gather db statistics. . .");
            dbstat=gdso.iscDatabaseInfo(dh, items, buf_total);
            out.print(df.format( System.currentTimeMillis() )+" statistics gathered, dbstat[] length="+dbstat.length);
            //out.println(dbstat[0]);
            String dts;
            i=0;
            while( dbstat[i]!=ISCConstants.isc_info_end) { 
                // API guide: A one-byte item return type. 
                // There are compile-time constants defined for all the item return
                // types in ibase.h (inf_pub.h ?)
                item=dbstat[i++];
                // API guide:  A two-byte number specifying the number of bytes that 
                // follow in the remainder of the cluster.          
                len = gdso.iscVaxInteger(dbstat, i, 2);
                i+=2;
                dts=df.format( System.currentTimeMillis() );
                if  (cntx.containsKey( (int)item) ) {
                    if ( cntx.get((int)item).cType == CounterType.DBOP ) {
                        // API Guide, pg 56 (Database operation counts):
                        // values are calculated on a per-table basis <...>
                        // 2 bytes specifying the table ID
                        // 4 bytes listing the number of operations (for example, inserts)
                        // done on that table.

                  // WHY len > 0  only for TWO relations (RDB$DATABASE and RDB$RELATIONS)
                        if (len > 0) { // ==> len = 2+4 (rel_id, counter_value)
                            out.println();
                            tabsIdx=dbstat[i]; ///gdso.iscVaxInteger(dbstat, i, 2);
                            out.print(   dts+"\t\t"+cntx.get((int)item).title+", len="+len+", tabsIdx="+tabsIdx);
                            out.print("\trel_id="+gdso.iscVaxInteger(dbstat, i, 2));
                            out.print("\ttab_name="+tabs.get(gdso.iscVaxInteger(dbstat, i, 2)) );
                            out.print("\tcounter="+gdso.iscVaxInteger(dbstat, i+2, len-2)); // why counter value ALWAYS =1 ???
                            //out.print("\tcounter="+dbstat[i+2]+" "+dbstat[i+3]+" "+dbstat[i+4]+" "+dbstat[i+5] );
                        }
                    }
                    if ( cntx.get((int)item).cType == CounterType.PERF ) { // this case works OK
                        out.println();
                        prevVal = cntx.get((int)item).val;
                        currVal = gdso.iscVaxInteger(dbstat, i, len);

                        out.print(   dts+"\t\t"+cntx.get((int)item).title+" "
                                     +String.format( "%12d; diff: %12d", 
                                                     currVal, 
                                                     prevVal != 0 ? currVal - prevVal : -1
                                                   ) 
                                );
                        cntx.get( (int)item).val = currVal;
                    }
                }

                i+=len;
            }
            out.println("\n");
exit(0);            
            Thread.sleep(5000);

        } catch (GDSException e)   {
            break;
        }
      } // while (true)

      out.println ("\n"+df.format( System.currentTimeMillis() )+" detaching from database. . .");
      gdso.iscDetachDatabase(dh);
      out.println (df.format( System.currentTimeMillis() )+" detached.");
    }
    catch (GDSException e) {
        out.println(df.format( System.currentTimeMillis() )+" EXCEPTION: SQLSTATE="+e.getSQLState()+", fb_error="+e.getFbErrorCode()+", msg="+e.getMessage());
    }
    catch (SQLException e) {
        e.printStackTrace();
        out.println ("sql exception: " + e.getMessage ());
    }    
  }
  
  static class StatValue {
      //int isc_const;
      final String title;
      final CounterType cType;
      int val=0;
      
      StatValue(CounterType c, String s) { title=s; cType = c; }
      StatValue(CounterType c, String s, int rPad) { title=String.format("%1$-" + rPad + "s", s); cType = c; }
      
      @Override
      public String toString() { return title; }
      // contract for Map or Set:
      @Override
      public boolean equals(Object o) {
          return (o instanceof StatValue)
                  && ((StatValue)o).title.equalsIgnoreCase(title);
      }
     
      @Override
      public int hashCode() {
          return title.hashCode();
      }
  }
}
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38496262
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

по-моему ты ерундой занимаешься. Возьми ОДНУ таблицу, получи буфер под свои запрошенные счетчики, и посмотри на БАЙТЫ в соответствии с возвращаемыми данными, что и где. Разберись, как идут параметры, номер таблицы, счетчики и прочее.
Потом возьми ДВЕ таблицы, проделай то же самое.
Потом, на основании полученной информации, будешь уже писать код и выводить его в правильном порядке.

Причем, все это надо было бы делать в монопольном режиме, а не в молотилке. Хотя, при молотилке можно было бы снять буфер два раза, и найти "статические" байты при двух снимках буфера за разное время.
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38496506
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВозьми ОДНУ таблицу, получи буфер под свои запрошенные счетчики, и посмотри на БАЙТЫ в соответствии с возвращаемыми данными, что и где. Вот вызов: iscDatabaseInfo(dh, items, buf_total) - как ему указать вернуть данные только для ОДНОЙ (той, что я выбрал) таблицы ?
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38496523
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидкак ему указать вернуть данные только для ОДНОЙ (той, что я выбрал) таблицы ?
никак, он всегда возвращает счетчики для всех таблиц (с которыми была данная операция)
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38496557
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже, у нас в 2.5 и выше бага с возвратом больших счетчиков через isc_database_info :-(
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38496893
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrпохоже, у нас в 2.5 и выше бага с возвратом больших счетчиков через isc_database_info :-(Не понял я что-то. Как значения счетчиков получает, например, трейс - не через isc_database_info ?
...
Рейтинг: 0 / 0
JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
    #38497036
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВ нижеприведенном коде явно трабл в куске, выделенном цветом. Но понять, чего там не так, я не смог.Там сплошной трабл. Писать код за тебя я не буду, скажу только, что для потабличных счётчиков (которые ты обозвал CounterType.DBOP) верно следующее:
а) указывается суммарная длина последующего массива пар {rel_id, value}, т.е. чтобы понять сколько элементов в массиве, нужно разделить её на 6
б) эти счётчики не являются суммарными для всех коннектов и накапливаются только для текущего коннекта (независимо от SS\CS\SC)
в) в 2.5 эти счётчики 4-х байтные, поэтому могут переполняться (теоритически, на практике - нужно оооочень постараться, ибо см. (б))
...
Рейтинг: 0 / 0
25 сообщений из 78, страница 3 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / JayBird 2.2.3: как им вызвать аналог isc_database_info() ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]