<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <tt>Hi Federico,<br>
      <br>
      Well, it is a good workaround. As a hint, if you do not want to
      sacrifice the "attrs" column for ordering (attributes are really
      useful to have in many usage scenarios), you can better use the
      "weights" column.<br>
      <br>
      Regards,<br>
    </tt>
    <pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
    <div class="moz-cite-prefix">On 18.08.2015 17:11, Federico Edorna
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAKi1vHiXvX4i3CgSduwhMgkO2qj_WZTqzAzBnfaARrMRVyekyA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_extra">In my table there is a priority
            column! ;) I don't know where did I get that schema...
            sorry, my mistake.</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">Now, going back to the workarround
            (just in case someone has the same issue), since I'm not
            using the attrs column value in the config file, I will use
            that column to order the set. To accomplish that, I tried
            with the following patch in modules/dispatcher/dispatch.c</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">
            <div class="gmail_extra">
              <div class="gmail_extra">--- /tmp/dispatch.c<span
                  class="Apple-tab-span" style="white-space:pre"> </span>2015-08-18
                10:40:27.461325458 -0300</div>
              <div class="gmail_extra">+++ ./dispatch.c<span
                  class="Apple-tab-span" style="white-space:pre"> </span>2015-08-18
                10:39:45.941081837 -0300</div>
              <div class="gmail_extra">@@ -699,7 +699,7 @@</div>
              <div class="gmail_extra"> <span class="Apple-tab-span"
                  style="white-space:pre"> </span>memset( d_data, 0,
                sizeof(ds_data_t));</div>
              <div class="gmail_extra"><br>
              </div>
              <div class="gmail_extra"> <span class="Apple-tab-span"
                  style="white-space:pre"> </span>/*select the whole
                table and all the columns*/</div>
              <div class="gmail_extra">-<span class="Apple-tab-span"
                  style="white-space:pre"> </span>if(ds_dbf.query(ds_db_handle,0,0,0,query_cols,0,6,0,&amp;res)
                &lt; 0) {</div>
              <div class="gmail_extra">+<span class="Apple-tab-span"
                  style="white-space:pre"> </span>if(ds_dbf.query(ds_db_handle,0,0,0,query_cols,0,6,&amp;ds_dest_attrs_col,&amp;res)
                &lt; 0) {</div>
              <div class="gmail_extra"> <span class="Apple-tab-span"
                  style="white-space:pre"> </span>LM_ERR("error while
                querying database\n");</div>
              <div class="gmail_extra"> <span class="Apple-tab-span"
                  style="white-space:pre"> </span>goto error;</div>
              <div class="gmail_extra"> <span class="Apple-tab-span"
                  style="white-space:pre"> </span>}</div>
            </div>
          </div>
        </div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra">That is, ds_dbf.query sorts the table
          using &amp;ds_dest_attrs_col. Now the postgres log shows:</div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra">2015-08-18 10:46:51 ART [9503]: [2-1]
          LOG:  duration: 0.224 ms  statement: select
          setid,destination,socket,state,weight,attrs from
          sbc.dispatcher <b> order by attrs</b><br>
          <br>
          I will try with this (at my own risk...) until we upgrade to
          2.x </div>
        <div class="gmail_extra"><br>
          Thanks!<br>
          <br>
          <br>
          <div class="gmail_quote">On Tue, Aug 18, 2015 at 8:45 AM,
            Bogdan-Andrei Iancu <span dir="ltr">&lt;<a
                moz-do-not-send="true" href="mailto:bogdan@opensips.org"
                target="_blank">bogdan@opensips.org</a>&gt;</span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"> <tt>Federico,<br>
                  <br>
                  There is no "priority" field in the dispatcher table
                  in 1.11 :<br>
                      <a moz-do-not-send="true"
href="http://www.opensips.org/Documentation/Install-DBSchema-1-11#AEN4123"
                    target="_blank">http://www.opensips.org/Documentation/Install-DBSchema-1-11#AEN4123</a><br>
                  <br>
                  wrong table ?<br>
                  <br>
                  Regards,<br>
                </tt><span>
                  <pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a moz-do-not-send="true" href="http://www.opensips-solutions.com" target="_blank">http://www.opensips-solutions.com</a></pre>
                </span>
                <div>
                  <div>
                    <div>On 17.08.2015 21:03, Federico Edorna wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div dir="ltr">
                        <div class="gmail_extra">Actually the table has
                          the priority column in ver 1.11. Anyway,
                          thanks for your response Bogdan, I will try to
                          find a workarround for this version until we
                          upgrade to 2.x.</div>
                        <div class="gmail_extra"><br>
                        </div>
                        <div class="gmail_extra">Thanks &amp; Regards</div>
                        <div class="gmail_extra"><br>
                        </div>
                        <div class="gmail_extra">Federico</div>
                        <div class="gmail_extra"><br>
                        </div>
                        <div class="gmail_extra">
                          <div class="gmail_quote">On Mon, Aug 17, 2015
                            at 5:56 AM, Bogdan-Andrei Iancu <span
                              dir="ltr">&lt;<a moz-do-not-send="true"
                                href="mailto:bogdan@opensips.org"
                                target="_blank">bogdan@opensips.org</a>&gt;</span>
                            wrote:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0 0 0 .8ex;border-left:1px
                              #ccc solid;padding-left:1ex">
                              <div text="#000000" bgcolor="#FFFFFF"> <tt>Hi
                                  Federico,<br>
                                  <br>
                                  This is an known issue with the older
                                  versions of OpenSIPS (not being able
                                  set an order for the records). In 2.1
                                  this was solved by having a priority
                                  column which dictates the oder of
                                  usage of records.<br>
                                  <br>
                                  For versions before 2.1, you have to
                                  rely on the oder provided by DB :(.<br>
                                  <br>
                                  Regards,<br>
                                </tt>
                                <pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a moz-do-not-send="true" href="http://www.opensips-solutions.com" target="_blank">http://www.opensips-solutions.com</a></pre>
                                <div>
                                  <div>
                                    <div>On 14.08.2015 20:49, Federico
                                      Edorna wrote:<br>
                                    </div>
                                  </div>
                                </div>
                                <blockquote type="cite">
                                  <div>
                                    <div>
                                      <div dir="ltr">Hello Guys,
                                        <div>
                                          <div
                                            style="font-size:12.8000001907349px">I'm

                                            using dispatcher module with
                                            postgres database. The
                                            ds_select_dst function in
                                            the script file is used like
                                            this:</div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">ds_select_dst("$(var(ds_set){<a
                                              moz-do-not-send="true"
                                              href="http://s.int/"
                                              target="_blank">s.int</a>})","8");<br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">that

                                            is, using "8" algorithm
                                            (first entry in set is
                                            chosen) because I need to
                                            use always the same
                                            destination in the set while
                                            it is up. If not, then the
                                            backup destination (next in
                                            the set) is used.</div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">The

                                            problem I've found is that
                                            when the sets are read from
                                            database (opensips restart
                                            or fifo ds_reload), the
                                            select hasn't a "order"
                                            directive  in the sql
                                            statement, so the order is
                                            defined depending of the
                                            last tuple update. The
                                            postgres log shows this when
                                            doing a fifo ds_reload:</div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">2015-08-14

                                            11:36:53 ART [23684]: [1-1]
                                            LOG:  duration: 0.582 ms
                                             statement: select
                                            setid,destination,socket,state,weight,attrs
                                            from sbc.dispatcher<br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">And

                                            the syslog &amp; debug=6
                                            shows:</div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div><span
                                              style="font-size:12.8000001907349px">DBG:db_postgres:db_postgres_submit_query:


                                              0x7f4344987010
                                              PQsendQuery(select
                                              setid,destination,socket,state,weight,attrs
                                              from sbc.dispatcher )</span><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">So,

                                            any sql update in any column
                                            will change the order in the
                                            set because we don't have
                                            the "order by priority" for
                                            example.</div>
                                          <div
                                            style="font-size:12.8000001907349px"><br>
                                          </div>
                                          <div
                                            style="font-size:12.8000001907349px">Is

                                            there any way to use the
                                            weight, priority or the id
                                            to have a fixed order in the
                                            set(s) destination?</div>
                                        </div>
                                        <div><br>
                                        </div>
                                        <div><br>
                                        </div>
                                        <div>Many Thanks!</div>
                                        <div>Federico</div>
                                      </div>
                                      <br>
                                      <fieldset></fieldset>
                                      <br>
                                    </div>
                                  </div>
                                  <pre>_______________________________________________
Users mailing list
<a moz-do-not-send="true" href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a moz-do-not-send="true" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
                                </blockquote>
                                <br>
                              </div>
                            </blockquote>
                          </div>
                          <br>
                        </div>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>